首页 > 其他分享 >【QT开发问题】使用自定义的QGroupBox,重写绘图事件paintEvent后边框消失的问题

【QT开发问题】使用自定义的QGroupBox,重写绘图事件paintEvent后边框消失的问题

时间:2022-12-19 13:34:11浏览次数:61  
标签:QGroupBox QT 自定义 边框 绘图 paintEvent 重写

问题描述

Qt界面开发过程中,使用自定义的QGroupBox,重写绘图事件paintEvent时,出现边框被覆盖的情况,或边框消失的问题。 左图是原始状态,直接重写绘图事件后,会变成右图空白状态。                       

                            图1                                                                                     图2

原因与解决方法

这是因为,默认的绘图事件存在给GroupBox类绘制边框的代码,所以重写的时候被覆盖了。要恢复默认状态,需要在重写的paintEvent函数中,先继承父类的方法,调用默认的绘图事件,再去写自己需要的代码,如下:
// MyGroupBox继承自QGroupBox
void MyGroupBox::paintEvent(QPaintEvent * event)
{
    // 需要先调用父类方法,因为重写了
    QGroupBox::paintEvent(event);
    this->setTitle("GroupBox");
    
    // 这个是绘制黑色的边框
    // 边框设置参考:https://blog.csdn.net/weixin_44335538/article/details/126365191
    this->setStyleSheet("QGroupBox{border:1px solid black; margin-top: 2.3ex;}"
                        "QGroupBox::title{subcontrol-origin:margin;left: 10px;}"
                        "QGroupBox *{}");
    
    // 下面可以写自己的代码
    // ......
    // ......
}

PS:上面关于QGroupBox黑色边框的设置,搜过很多qss设置参数,但只有上面这个自己电脑可以用,并且一定要加 "QGroupBox *{}"才不会标题下沉,虽然我也不晓得为啥,有知道原因的朋友欢迎交流!!

参考文章

Stackoverflow-PyQt5: Why does the default style of a QGroupBox disappear when painting?  

标签:QGroupBox,QT,自定义,边框,绘图,paintEvent,重写
From: https://www.cnblogs.com/guazat/p/qt-issue-qgroupbox-customize.html

相关文章

  • itop3568开发板一键烧写QT程序到开发板
    根据上一小节设置好编译套件后,打开自己的qt工程,然后点击qtcreator里面的项目,把编译器切换成上一章节设置好的的编译器,如下图所示:然后打开要编译的QT代码的pro文件,......
  • itop3568开发板一键烧写QT程序到开发板
    根据上一小节设置好编译套件后,打开自己的qt工程,然后点击qtcreator里面的项目,把编译器切换成上一章节设置好的的编译器,如下图所示: 然后打开要编译的QT代码的pro......
  • Qt音视频开发06-海康sdk内核linux客户端
    一、前言海康sdk的示例在官方是提供了的,但是无论UI还是交互简直是宇宙无敌的垃圾,猜测应该是初学者编写的,估计练手用的,所以老早就想把这个linux支持集成到自己的示例中,既然......
  • Java如何实现自定义异常
    自定义异常概述为什么需要自定义异常类:我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己......
  • Qt数据库连接问题
    Qt无法连接MySQL1.问题示例:boolConnectDatabase::connectMySQL(){db=QSqlDatabase::addDatabase("QMYSQL");db.setHostName("localhost");db.setData......
  • Vue 中自定义事件
    Vue中自定义事件1:自定义说明/*组件的自定义事件一种组件间通信的方式,适用于:子组件===>父组件使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事......
  • [R语言] ggplot2入门笔记3—通用教程如何自定义ggplot2
    date:2020-03-2111:10:02+0800tags:-R语言-数据分析与可视化通用教程简介(IntroductionToggplot2)代码下载地址以前,我们看到了使用ggpl......
  • [编程基础] C#自定义类调用窗体控件
    date:2017-11-0222:54:00+0800tags:-编程基础如果自定义类需要调用窗体控件,首先需要将窗体控件的可见级别(Modifiers)设为public。如下图所示:然......
  • (转)android:自定义ToolBar详解
    今年(2014)的googlei/o发表令多数人为之一亮的materialdesign,而google也从「googlei/o2014」开始,大家也陆陆续续地看到其更新的androidapp皆套用了这个设计介......
  • Qt 之高级网络操作(HTTP/FTP 快速上手)
    简述QtNetwork模块中提供了一些高级别的类,例如:QNetworkRequest、QNetworkReply和QNetworkAccessManager,使用常见的协议执行网络操作。在分享的过程中,顺便介绍下Fiddler......