引言

自定义窗口,该窗口包含标题栏,默认整个窗口的边框线为蓝色,当点击该窗口的时候,窗口的边框线便为红色。程序在运行的时候,窗口的边框线只显示了左右两边的线,没有显示上下边的线。

示例

效果:

解决方法

针对上面窗口只显示左右两边,不显示上下两边,在改变边框线的宽度后线宽依旧没有变化,考虑到是窗口的内容遮住了边框线,于是在ui文件中重写调整绘制边框线的控件上面的窗口的大小,使绘制边框线的窗口上的窗口小于绘制边框线的窗口。这样绘制的边框线便不会被遮挡。
先看一下整个ui窗口的结构:

边框线在子控件backwidget上绘制的,并设置整个窗口LayoutShowForm为栅格布局,布局的上下左右边距均为0,这样backWidget与LayoutShowForm一样大小,在backWidget之上,进行垂直布局,将控件widget与titleWidget进行垂直布局,在titleWidget之中将namelabel进行了栅格布局,从而呈现上面所示的界面。
边框线在backWidget上绘制的,由于backWidget与LayoutShowForm一样大小,所以不能显示完整的边框线。这时需重新调整backWidget的栅格布局的上下左右边距,使该边距能正好显示出所设置的线宽,这样就能显示正常的边框线。下面是调整完backWidget的上下左右边距后的ui。
ui窗口如下图:

对应的ui的结构图还是没有变化,只是backWidget的栅格布局中设置了上下左右边距。之前所有的栅格布局边距都为0.
调整后的栅格布局的上下左右边距:

接下来,上代码,由于边框线是在子控件上绘制的,而并非直接在窗口LayoutShowForm上绘制,这里不能直接使用重绘函数,而必须使用事件过滤,首先在子控件backWidget上安装事件过滤:

ui->backWidget->installEventFilter(this);

接下来重写事件过滤:

bool LayoutShowForm::eventFilter(QObject *watched, QEvent *event)
{if (watched == ui->backWidget && event->type() == QEvent::Paint)               {paintLayoutPreBoardLine(ui->backWidget);return true;}return false;
}

在事件过滤函数中实现绘制边框线:

void LayoutShowForm::paintLayoutPreBoardLine(QWidget *widget)
{QPainter painter(widget);//backWidgetQPen pen;pen.setWidth(3);pen.setColor(m_colorBorad);painter.setPen(pen);painter.setRenderHint(QPainter::Antialiasing);painter.drawRect(QRect(0,0,244,165));m_isSetBoardColor = false;qDebug()<<QStringLiteral("重绘边框色");
}

忘记一点当设置了backWidget的栅格布局的上下左右间距后,原本的垂直布局中的内容就会变小,读者可以根据项目需要来调整各控件的大小。
以上便可以实现边框线正常显示。

qt自定义窗口,其绘制的窗口边框线显示不全相关推荐

  1. 微信小程序苹果手机边框1rpx显示不全解决办法

    微信小程序苹果手机边框1rpx显示不全,加上transform: rotateZ(360deg) .address-map{width: 125rpx;height: 36rpx;line-heigh ...

  2. qt creator在高分辨率笔记本上控件运行显示不全的问题解决方法

    之前在学习qt的时候遇到的一个问题, 明明qt设计师上是没问题的,一运行就显示不全 解决方法很简单 在main第一行加上 QCoreApplication::setAttribute(Qt::AA_E ...

  3. qt自定义含有拖动功能的窗口在点击窗口的下拉列表时窗口移动

    提要 自定义的弹出窗口,窗口可以实现按下鼠标拖动,鼠标释放停止拖动,窗口种含有子控件,下拉列表,在点击下拉列表时窗口移动. 解决方法 因为点击下拉列表的时候,触发了窗口的移动事件,所以添加下拉列表的事 ...

  4. vs矩形框边框线显示被选中的区域;_如何使用OpenCV可视化的截取感兴趣区域

    OpenCV是一个著名的计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成,同时提供了Python ...

  5. vs矩形框边框线显示被选中的区域;_条形码区域解码:Web小工具

    条形码解码首先要做定位,找到条形码在图像中的区域.但是有时候受图像质量影响,算法找寻的区域可能产生偏差,最后导致解码失败.这个时候,可以尝试手动选择区域,来辅助条形码的识别. Web Canvas框选 ...

  6. vs矩形框边框线显示被选中的区域;_Excel中,重复的数据高亮显示,如何快速删去?...

    快速删去重复数据,雷哥在这里提供4种超简单的解决方法,大家一看就会. 为了更加直接明了地说明,雷哥在这里通过具体案例进行讲解. 案例:下图B列日期中,橘黄色部分是我们已经标记好颜色的重复项. 要求:快 ...

  7. html word表格边框变成表格,word表格边框显示不全跨页面显示的解决方法

    word表格是很多伙伴常会使用到的一款办公软件,那你晓得边框显示不全跨页面显示如何处理吗?如若不了解的话,就看看下文word表格边框显示不全跨页面显示的解决方法吧. word表格边框显示不全跨页面显示 ...

  8. qt整个窗口上绘制矩形与在窗口的子控件上绘制矩形

    引言 创建一个基于QDialog的项目,自动生成ui文件,此时再添加新文件,创建一个基于QWidget的ui类,此类具有自定义标题栏,让该自定义类显示在窗口Dialog上,一开始具有红色的边框线,且四 ...

  9. 【QT】QT从零入门教程(十一):QT自定义窗口

      首先是借鉴了网上的博客,实现无边框,自由拖动的自定义窗口效果. #ifndef CUSTOMWINDOW_H #define CUSTOMWINDOW_H #include <QtGui&g ...

最新文章

  1. List复制:深拷贝和浅拷贝用法及区别
  2. BCH网络成功发布第一个商业级别的Token
  3. 勘误《iOS网络高级编程:iPhone和iPad的企业应用开发》
  4. 单例模式可以分为懒汉式和饿汉式:     懒汉式单例模式:在类加载时不初始化。     饿汉式单例模式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。
  5. 【DB2】NVL2函数
  6. 2020 操作系统第二天复习(习题总结)
  7. 日常小记录json文件(json.load()、json.loads()、json.dump()、json.dumps())
  8. Pytorch在colab和kaggle中使用TensorBoard/TensorboardX可视化
  9. unity打包IOS填坑1
  10. 计算机技能大赛简讯内,【报道】2010学西城区职业高中计算机排版技能竞赛简讯...
  11. mysql密码expired_mysql密码过期的修改方法(your password has expired)
  12. python lncrna_超简便的国产lncRNA预测工具LGC
  13. linux驱动程序的测试,Linux驱动学习笔记(4)字符设备驱动测试
  14. WoS数据库使用及检索示例
  15. Caused by: hudson.plugins.git.GitException: Command “git fetch --tags --progress -- https://github.
  16. NAT以及基本配置(静态配置)
  17. Python数据处理之pandas基础入门
  18. java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100/虚拟机调优
  19. VMware虚拟机网络连接的3种方式
  20. 计算机相关分类号,中图法分类号(计算机专业) TP

热门文章

  1. 最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控
  2. 2020-09-01
  3. 云原生基础架构的最佳状态,就是没有架构?
  4. 阿里云MaxCompute,用计算力让数据发声
  5. 华为庞鑫:闪存3.0时代,四大变化激发全闪存数据中心潜能释放
  6. 全流分析取证:高级威胁哪里跑?!
  7. 数据分析:为什么说Python比Excel更简单高效 ?
  8. 腾讯车联发布TAI3.0:三步实现汽车智能进化,2个月快速上车
  9. 老码农吐血建议:2020年,低于1w的程序员要注意了...
  10. 最新突破!科学家研发出世界首款精神控制手臂机器人;近日Kubernetes 1.15 正式发布;雷军公布小米手机产品线布局……...