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

引言

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

示例

效果:
在这里插入图片描述

解决方法

针对上面窗口只显示左右两边,不显示上下两边,在改变边框线的宽度后线宽依旧没有变化,考虑到是窗口的内容遮住了边框线,于是在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的栅格布局的上下左右间距后,原本的垂直布局中的内容就会变小,读者可以根据项目需要来调整各控件的大小。
以上便可以实现边框线正常显示。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

防火墙contos6.8操作手册

一、基本操作&#xff1a; 查看防火墙状态 service iptables status 停止防火墙 service iptables stop 启动防火墙 service iptables start 重启防火墙 service iptables restart 永久关闭防火墙 chkconfig iptables off 永久关闭后重启 chkconfig iptables on 二、查看…

漫画:996的本质是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;从前&#xff0c;有一个卖苹果的小贩&#xff0c;小贩每天都能拥有24个神奇的苹果。他…

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

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

1分钟 Zookeeper 快速入门_windows环境

下载zookeeper 官网链接:https://zookeeper.apache.org/ 修改conf/zoo.cfg 文件名

跳槽季:跳和不跳之外的第三选择

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;珍妮兔转自&#xff1a;轻松做软件每年的这个时候&#xff0c;都是跳槽的黄金季节。很多公司的招聘计划&#xff0c;也是在这个时间启动。今年的“跳槽季”&#xff0c;氛围却与往年不同。滴滴裁员2000&#xff0c;…

Dubbo Zookeeper Quick Start

新建一个父工程 选择Maven 快速构建项目 按图操作&#xff1a; 添加子项目(服务方) 添加子项目(消费方) 一个父工程&#xff0c;2个子项目&#xff08;服务方&#xff0c;消费方&#xff09;&#xff0c;基本就完成了 在2个子项目中需要在main手动创建resour…

qt程序运行时绘图出现错误

问题 QWidget::paintEngine: Should no longer be calledQPainter::begin: Paint device returned engine 0, type: 1QPainter::setPen: Painter not activeQPainter::drawPoints: Painter not active程序运行的时候出现上述问题&#xff0c;说明此时下端代码并未被触发。 v…

异构计算=未来?一文带你秒懂3大主流异构

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;Pasca来源&#xff1a;蛋蛋团&#xff08;ID&#xff1a;dandan_tuan…

Git Windows安装手册

文章目录1. 下载、安装、验证2、Next3. 选择安装位置4. 选择组件5. 创建开始菜单目录6. 选择Git使用的默认编辑器7 . Next8. 选择HTTPS传输后端9. 配置行结束转换10. Next11. 配置终端模拟器以与 Git Bash 一起使用12. git安装验证&#xff1a;1. 下载、安装、验证 git官网&am…

Qt添加类文件编译后,再添加宏Q_OBJECT

问题简述 创建项目的时候&#xff0c;已经添加了类文件&#xff0c;前期认为不需要信号槽&#xff0c;就没有添加宏Q_OBJECT,后面项目需要&#xff0c;又加入了宏Q_OBJECT&#xff0c;但是发现只是添加了一个宏Q_OBJECT&#xff0c;除此之外没有改动其它的代码&#xff0c;原本…

Nutanix,在转型的道路上越走越远 | 人物志

戳蓝字“CSDN云计算”关注我们哦&#xff01;人物志&#xff1a;观云、盘点、对话英雄。以云计算风云人物为核心&#xff0c;聚焦个人成长、技术创新、产业发展&#xff0c;还原真实与鲜活&#xff01;一年多以前&#xff0c;以超融合设备厂商之名起家的Nutanix&#xff0c;开始…

使用自己的域名解析CSDN博客

本文主要介绍怎样使用自己购买的域名指向CSDN博客 通常来说技术人员都会创建个自己的技术博客&#xff0c;总结下工作中的问题&#xff0c;经验等等&#xff0c;不过某些博客的访问链接的确是不太容易记忆或者输入&#xff0c;对我们分享造成一定的困扰&#xff0c;本文通过配置…

qt中设置QTabWidget,QGroupBox,QScrollArea的样式

引言 本文对标题中所述的三种控件的样式使用样式表来设置其外观。该样式表没有采用样式文件&#xff0c;而是在程序中直接使用函数setStyleSheet()来设置控件的样式。 前期准备 ui文件中各控件的结构如下图&#xff1b; 1.QGroupBox 从上面可以看到&#xff0c;QGroupBox属…

查看linux系统版本信息(Oracle Linux、Centos Linux、Redhat Linux、Debian、Ubuntu)

一、查看Linux系统版本的命令&#xff08;3种方法&#xff09; 1、此命令也适用于所有的Linux发行版。 cat /etc/issue[rootS-CentOS home]# cat /etc/issue   CentOS release 6.5 (Final)   Kernel \r on an \m 2、这种方法只适合Redhat系的Linux&#xff1a; cat /et…

qt设置行编辑器不可编辑

解决方法 1.设置为只读 setReadOnly(true); 2.设置行编辑器失去焦点 setFocusPolicy(Qt::NoFocus);

Guns导入开发工具

eclipse部署guns&#xff1a; 1、import -> 搜索maven -> Existing Maven Projects -> 选择guns根目录 2、修改配置文件&#xff1a; spring datasource &#xff1a; 修改为本人的数据库连接 guns flowable &#xff1a;修改为本人的数据库连接 muti-datasource&…

分布式精华问答 | 如何实现分布式系统的高可用性?

布式的处理方式越来越受到业界的青睐——计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。今天&#xff0c;我们就来看看关于分布式的精华问答吧&#xff01;1Q&#xff1a;什么是分布式缓存&#xff1f;A&#xff1a;为了提高性能和响应时间&#xff0c;在应用程…

qt将生成的程序打包在他人电脑上可用

引言 生成的可执行文件exe后&#xff0c;想在没有安装qtCreate编译器的电脑上用&#xff0c;这里可以使用qt自带的打包工具来添加所需的库到运行程序所在的目录。 步骤 将生成的exe文件拷贝到一个空文件夹下&#xff0c;若程序使用过程中用到其他项目成员的库文件&#xff0…

Guns 下载、导入、运行_入门试炼01

一、在码云搜索Guns下载项目解压&#xff1a; 码云Guns&#xff1a;https://gitee.com/stylefeng/guns 二、打开idea点击open选择guns文件夹&#xff0c;等一会&#xff0c;会出现&#xff1a; 三、配置Guns项目的数据库 在导入成功的“guns-admin”项目中&#xff0c;我们…

Docker 官方公共仓库 Docker Hub 遭攻击,恐19 万用户信息泄露;Intel 10核心新品要现身了?...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 新上的努比亚红魔3&#xff…