当前位置: 首页 > article >正文

Qt遇到常见问题记录

1.Qt版本选择

Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的

(很多嵌入式板子还是用Qt4.8),其实该版本是和Qt5.5差不多时间发布的。

参考链接

Qt 5.5 Released

Qt5.6.3最最后支持xp系统的长期支持版本,Qt5.7.0是最后支持xp系统的非长期支持版本。

Qt5.12.3是最后提供mysql数据库插件的版本,往后的版本需要自行编译对应的mysql数据库插件,官方安装包不再提供。

Qt5.12.5是最后样式表性能最高的版本,经过酷码大佬查阅代码发现此后版本的样式表源码中为了修复一个bug做了循环嵌套设置,导致性能急剧下降,界面越多性能暴降10倍以上。

Qt5.14.2是最后提供二进制安装包的版本,后面的版本都需要在线安装。

Qt5.15系列是最后支持win7的版本,Qt6系列版本需要更改源码编译才能支持,这对于小白来说难于上青天。

如上,因用户使用Win7,并开发机属于离线工作模式,故选择5.14.2(含)之前版本作为IDE开发工具,性能方面,考虑5.12.5

2. Qt QButtonGroup addButton添加后规律

如果默认不指定id,则默认id从 -2 开始计数,依次递减

可通过-(id+2)转为0-base的下标进行访问

3. Qt Connect接lamda实现

通常使用不挂接slot的lamda方式,可以忽略SIGNAL、SLOT及形参的使用,达到高内聚的要求。如:

connect( button_circle, &QPushButton::toggled, this, [=](bool checked)
{
// todo
});

但是当遇到存在多个同名信号,如QButtonGroup的buttonClicked信号,

void buttonClicked(QAbstractButton *);
void buttonClicked(int);

则需要进行类型转换

connect(group, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, [=](int id)
{
});

4. QWidget的QSS背景色设置失效

试图重用某一块UI界面,通常做法会从QWidget派生出一个子类,将这部分局部功能进行封装。引入全局QSS,或直接构造时setStyleSheet,直接使用QWidget,正常。

一旦派生子类,则出现背景色设置失效的情况。

原因:Qt官方解释:Qt Style Sheets Reference | Qt Widgets 5.15.15

Supports only the background, background-clip and background-origin properties.

If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget as below:

void CustomWidget::paintEvent(QPaintEvent *)
{
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

The above code is a no-operation if there is no stylesheet set.

解决方法:

方法1: 听话,重载paintEvent

方法2: 内叠一个QWidget,用它设置背景色

方法3: 改祖,从QFrame派生

方法4: setAttribute(Qt::WA_StyledBackground)


http://www.kler.cn/a/132300.html

相关文章:

  • Linux-Apache
  • C++ —— string类(上)
  • Java 核心技术卷 I 学习记录九
  • 说说软件工程中的“协程”
  • 【微服务】Spring AI 使用详解
  • 逆向攻防世界CTF系列41-EASYHOOK
  • 无线WiFi安全渗透与攻防(五) Kali使用mdk3攻击wifi(详细教程)以及相关周边知识
  • linux版:TensorRT安装教程
  • Springboot2+thymeleaf+Jpa实现CRUD操作
  • 安全框架springSecurity+Jwt+Vue-1(vue环境搭建、动态路由、动态标签页)
  • 一文了解VR全景拍摄设备如何选择,全景图片如何处理
  • 关于SPJ表的数据库作业
  • frp新版本frp_0.52.3设置
  • 【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理(正在更新中......)
  • 【项目管理】PMO技能树21项参照
  • duplicate复制数据库单个数据文件复制失败报错rman-03009 ora-03113
  • 数据库Communications link failure
  • 记录一次macos没有sudoers文件问题
  • PSP - 蛋白质复合物结构预测 Template 的 Multichain Mask 2D (二维多链掩码)
  • MFC保存窗口客户区为图片
  • BGP的基础知识
  • 人工智能Keras的第一个图像分类器(CNN卷积神经网络的图片识别)
  • 【备忘】ChromeDriver 官方下载地址 Selenium,pyppetter依赖
  • 直播间停留人气的10种方法
  • JAVA刷题之字符串的一些个人思路
  • C# 正则表达式大全