
QT
文章平均质量分 65
Pafey
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在 Qt 中实现动态切换主题(明亮和暗黑)
对于自定义绘制的控件,监听主题变化并更新样式。Q_OBJECTpublic:protected:// 根据主题绘制背景} else {update();// 触发重绘通过上述步骤,可以实现 Qt 应用程序的动态主题切换功能。模块化管理:使用集中处理样式加载和信号通知。资源嵌入:利用 Qt 资源系统管理 QSS 和图片。信号与槽机制:确保所有控件在主题变化时更新。持久化配置:保存用户偏好提升体验。自定义控件支持:通过重绘事件或信号响应更新样式。原创 2025-05-21 16:52:59 · 670 阅读 · 0 评论 -
Qt 中为什么有时候要在 cpp 文件的最后加上 #include “main.moc“
在代码中,添加是为了手动引入由moc生成的元对象代码,确保 Qt 的核心功能(如信号/槽)正常工作。这是单文件 Qt 项目的常见做法,但正式项目中更推荐将声明和实现分离到.h和.cpp文件中。原创 2025-03-07 10:26:10 · 821 阅读 · 0 评论 -
Qt5 Qt6 版本选择
Qt5: 5.9 LTS 长期支持版本 已于2020年5月31日终止维护,不建议使用及其以前的版本。Qt5: 5.12 LTS 长期支持版本 维护至 2021年12月6日。Qt5: 5.15 LTS 长期支持版本 维护至 2023年5月29日。:Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的。Qt5.7.0是最后支持xp系统的非长期支持版本。Qt6: 6.2 LTS 长期支持版本。Qt5 : 5.6 LTS 长期支持版本。各版本的 LTS 版本。原创 2025-01-15 15:45:26 · 3101 阅读 · 0 评论 -
Qt 程序 DPI 适配方法归纳
因此,需要手动设定所有字体大小,一种方法是在 Qt Designer 中编辑目标控件的 stylesheet 将字体尺寸用 px 重新设定。此应用不会缩放 DPI 更改。它将查询 DPI 一次,并在应用的生存期内使用该值。如果 DPI 发生更改,应用将不会调整为新的 DPI 值。当 DPI 与系统值发生更改时,系统会自动纵向扩展或缩减它。此应用不会缩放 DPI 更改,并且始终假定其比例系数为 100% (96 DPI)。此应用在创建 DPI 时检查 DPI,并在 DPI 发生更改时调整比例系数。原创 2025-01-15 15:34:13 · 903 阅读 · 0 评论 -
Qt中容器 QVector、QList、QSet和QMap 性能与用途比较
【代码】Qt中容器 QVector、QList、QSet和QMap 性能与用途比较。原创 2025-01-14 09:52:52 · 927 阅读 · 0 评论 -
Qt 项目优化实践方向
它将资源的获取(如分配内存)放在对象的构造函数中,并将资源的释放(如释放内存)放在对象的析构函数中。全局或静态作用域中的裸指针可能导致内存泄漏,因为它们的生命周期与程序的生命周期相同,且往往没有明确的释放时机。Qt的资源文件(qrc)允许将资源编译到应用程序的可执行文件中,从而简化了资源的部署和管理。通过以上这些最佳实践,你可以更有效地管理Qt应用程序中的资源,从而提升程序的性能和用户体验。在Qt中,尽量避免不必要的资源复制。使用智能指针或Qt的对象树机制来管理这些资源,确保在不再需要时能够自动释放。原创 2024-09-25 17:13:49 · 1497 阅读 · 0 评论 -
Qt 弹出菜单右键菜单 QMenu 设置不同颜色的子项
Qt 弹出菜单右键菜单 QMenu 设置不同颜色的子项原创 2024-09-14 17:29:19 · 1178 阅读 · 0 评论 -
qt 槽函数中获取发射信号的对象(widget)
qt 槽函数中获取发射信号的对象(widget)原创 2024-09-11 16:38:44 · 1194 阅读 · 0 评论 -
Qt QLineEdit 输入内容后字数在右侧动态展示
QLineEdit 设置可输入最大长度可以使用怎么实时的把当前输入字数显示出来呢,像饿了么的 input 组件那样<el-inputplaceholder="请输入内容"Qt 中 QLineEdit 配合 QLabel 也可以很方便的实现这个效果。原创 2024-09-04 11:22:49 · 708 阅读 · 1 评论 -
Qt 按钮图片文字上下结构(纯qss实现)
纯qss实现 QPushButton 图片文字上下结构原创 2024-09-03 18:00:52 · 609 阅读 · 0 评论 -
Qt 模仿企业微信图标实现按钮图片文字上下结构
模仿企业微信左侧栏图标实现原创 2024-09-03 17:42:23 · 1042 阅读 · 0 评论 -
Qt QPushButton 按钮添加数字气泡
项目中,在某个按钮的右上角添加数字气泡是一个很常见的功能,可以用新建一个组合类来实现。不过这样比较麻烦,如果加气泡是后面的需求,可能改动的地方较多。要注意的是,红色气泡 QLabel 的长宽动态决定了 border-radius: 8px 的值,radius是长宽一半。如果气泡的数字超过99,需要显示 99+ 的时候,可以加大 QLabel 的宽度。原来的按钮放在 QWidget 中间,气泡放在 QWidget 的右上角。我这个按钮比较小,99+的时候就挡住按钮本身比较多了。原创 2024-09-03 14:12:28 · 691 阅读 · 0 评论 -
Qt QPushButton 按钮右上角增加小红点
ui.btTool 是需要添加小红点的按钮。在项目里有时候应用类按钮在模块上新时,需要增加小红点提示。实现的方法有很多 ,下面介绍超简单的一种。直接在按钮上贴一个 QLabel 即可。原创 2024-09-02 15:15:47 · 663 阅读 · 0 评论 -
一个简单的基于Qt的MVC框架
这个示例展示了如何使用Qt搭建一个简单的MVC框架,其中模型中的操作在子线程中处理。你可以根据需要扩展这个框架,添加更多的功能和复杂性。希望这个示例对你有帮助!原创 2024-07-11 17:10:01 · 1385 阅读 · 4 评论 -
QT QDateEdit 修改日历周六日颜色
效果图:代码实现:QCalendarWidget *pCalendarWidget = ui.dateEditBegin->calendarWidget();QTextCharFormat f =pCalendarWidget->weekdayTextFormat(Qt::Monday);//获取周一字体格式f.setForeground( QBrush(QColor("#0...原创 2019-10-25 14:22:59 · 2199 阅读 · 1 评论 -
QListWidget 滚动条滚到最后动态增加子项
实现一个小功能,列表初始加载内容有限,当滚动条拉到最后动态加载更多内容。1.给 QListWidget 的垂直滚动条设计一个槽connect(ui.listWidget_All->verticalScrollBar(),SIGNAL(valueChanged(int )),this,SLOT(slot_listWidgetAllScrollBar_valueChanged(int ))...原创 2019-10-16 10:11:23 · 2750 阅读 · 1 评论 -
qt QWidget窗体最小化(showMinimized)后点任务栏恢复后界面卡死
RT,找到2个解决方法如下: 我的qt4.8.6 采用1方法解决问题,2方法无效方法1 重写changeEvent//头文件申明void changeEvent(QEvent *e);//函数实现void myWidgetWindow::changeEvent(QEvent *e){ switch (e->type()) { case QEv...原创 2018-03-29 15:32:06 · 6897 阅读 · 1 评论 -
QT 清空某个widget中的子控件
QList<QPushButton*> btns = ui.scrollAreaWidgetContents->findChildren<QPushButton*>(); foreach(QPushButton* btn, btns) { if("btn_AddTab" == btn->objectName())//不想删除某个 continu...原创 2019-07-25 15:12:42 · 5665 阅读 · 0 评论 -
QComboBox 设置下拉列表颜色
1.在 QComboBox 的父 Widget 中设置 QComboBox 的样式QComboBox{ background-color: rgb(255, 255, 255); border:1px solid rgb(221,221,221); font: 10pt "微软雅黑"; padding-left:10px; }QComboBox QAbstractItemView...原创 2019-07-25 15:19:39 · 8197 阅读 · 0 评论 -
Qt 获取控件位置坐标,屏幕坐标,相对父窗体坐标
QPoint QMouseEvent::pos()这个只是返回相对这个widget(重载了QMouseEvent的widget)的位置。const Returns the position of the mouse cursor, relative to the widgetthat received the event. If you move the widget as a resu...原创 2019-08-14 14:52:06 · 25271 阅读 · 0 评论 -
QTextEdit 或 QTextBrowser 高度自适应
以下方法收集自网络使用 QTextDocument 的 contentsChanged 信号可以解决此问题。QTextEdit *editor = new QTextEdit(this);...connect(editor->document(),SIGNAL(contentsChanged()),this,SLOT(textAreaChanged()));...private...原创 2019-09-03 18:45:19 · 4961 阅读 · 3 评论 -
qt 子线程对界面进行更新失败
有个按钮会根据适当时候变更图片。比如类型qq的在线离线状态,如果检测在线离线状态的方法是在子线程中,那么去改变按钮的样式会失效。这个问题困扰了我2天,最后才发现是这么回事。解决方法:可以在子线程识别到了状态变化后,利用消息的形式,让主线程去响应这个变更按钮样式操作。...原创 2018-11-09 17:11:01 · 1037 阅读 · 0 评论 -
QSlider 解决点击不能到该位置问题
方法一:可以继承重写一个QSlider方法二:1.instaneventfiliter(this);//slider安装一个事件过滤器2.在eventfilter(QObject *,QEvent*)中拦截它,很简单吧例子:slider=new QSlider(this); slider->installEventFilter(this);bool trayIconMenu::...转载 2019-07-18 16:52:00 · 1724 阅读 · 2 评论 -
Qt 如何处理密集型耗时的事情(两种方法)
有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响应用户的任何操作,窗口也不会重新绘制,从而处于“无法响应”状态,这是一个非常糟糕的体验 。在这种情况下,有一种方法是使用多线程,即在子线程中处理文件保存,主线程负责界面相关。而如果不想使用多线程,...原创 2019-05-27 15:01:29 · 1725 阅读 · 0 评论 -
QT 刷新界面时假死
我们知道,在进行费时的操作时,比如从网络读取数据,从本地数据库读取数据等,为了避免界面卡死,把这些操作放到线程里处理。 待处理完毕后,通过信号槽函数机制通知到 UI 线程进行数据刷新。可有时候设置比较复杂的界面时,比如树控件,数据量较大时,又需要递归写入数据,需要排序等复杂逻辑,导致刷新的时候界面就会卡死一阵子。 那么为了避免这种情况,有个很简单的处理方式。 那就是在循环里面,每次插入数据后...原创 2018-06-12 17:26:58 · 3705 阅读 · 1 评论 -
QTreeWidget 遍历所有子节点(QTreeWidgetItem)
这恐怕是最简单的写法了,逛论坛发现的,亲测好用 //ui 文件中定义 //QTreeWidget *treeWidget; //... //遍历treeWidget QTreeWidgetItemIterator it(ui.treeWidget); while (*it) { //do something like ...原创 2018-05-08 19:21:52 · 40332 阅读 · 7 评论 -
QT 使用 QLabel 实现圆形头像及鼠标悬停效果
原链接 看到个很好效果的实现,代码如下 QString file = "F:\\我的文档\\eer\\user\\188\\Head\\custom.png"; QPixmap pixmapa(file); QPixmap pixmap(40,40); pixmap.fill(Qt::transparent); QPainter painter(&...原创 2018-04-28 18:45:57 · 4232 阅读 · 0 评论 -
QPushButton 实现保持按下效果
我们知道微信电脑版左上侧的3个按钮,是可以保持按下状态,且只要有个按下,之前按下的按钮就要切换至弹起状态。 如图 ——————————那么 QPushButton 怎么实现这种效果呢?其实很简单在 qt 设计师直接编辑按钮属性即可,在 QPushButton 的 QAbstractButton 属性里勾选 checked 和 autoExclusive ...原创 2018-04-28 15:01:49 · 31047 阅读 · 8 评论 -
qt4.8.6 基于Phonon的播放器无法播放acc等音频文件解决方法
对于Qt多媒体应用开发,主要使用Phonon多媒体框架。但是受制于框架的设计,实际的多媒体功能都由后端(Backends)来实现,Phonon框架本身不提供多媒体资源的编码和解码。对于Windows平台而言,Phonon框架支持的插件是DirectShow,其只能支持一部分多媒体类型,对于常用的mp4、rmvb,手机上的acc等格式都不予支持。 针对上述问题,网上找到的方法是改用功能强大的 MP...原创 2018-03-31 15:20:39 · 1840 阅读 · 0 评论 -
QT 中使用 Windows API----SendMessage() 进行窗体间消息传递
概述 在处理 qt 间窗体间消息传递时,一般都是使用信号槽函数的方式来进行,只需要在发送消息窗体 emit 消息,在接受窗体响应 slot 槽函数即可,不过这一般都是在子窗体和父窗体或子控件和父控制之间,如果涉及到一个主窗体下的2个单独子窗体之间的传递消息,如果依然使用信号槽来传递的,需要通过它们共同的父窗体来中转,除此之外,其实还可以使用 Windows 的 api 函数 SendMes原创 2017-07-14 10:43:10 · 10026 阅读 · 0 评论 -
QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数
啰嗦 在设置QLineEdit 默认提示语和最大可输入长多时,可以很方便的调用自带的setPlaceholderText() 和 setMaxLength ()函数来实现,可是在用到多行文本输入的地方要用到QTextEdit ,但是QTextEdit 并未自带这个两个函数,那么要实现这个功能只能自己另外写了。实现实现起来也很简单,主要是处理focusInEvent 和...原创 2017-07-13 16:54:18 · 11505 阅读 · 4 评论 -
Qt 中实现 hmac Sha1 加密并以 base64编码输出
#include QString hmacSha1(QByteArray key, QByteArray baseString){ int blockSize = 64; // HMAC-SHA-1 block size, defined in SHA-1 standard if (key.length() > blockSize) { // if key is longer than b转载 2017-06-22 11:00:57 · 3249 阅读 · 1 评论 -
Qt 带自定义数据结构参数的槽函数连接失败
描述如果信号名字,函数名字都对,连接函数都对,参数类型都对,参数个数也合法的情况下,还是连接失败。当你在一个以后槽函数添加一个新的结构体参数时,槽函数连接失败了,往往就是如下问题。你没有向系统声明这个结构体类型,系统不认这个,故而不响应。代码自定义结构体定义后加上Q_DECLARE_METATYPE(Type)typedef struct struCustom...原创 2017-06-29 14:21:14 · 1495 阅读 · 1 评论 -
QT 无法正确展示或者识别图片或文件
问题描述有时候我们发觉,Qt无法正确的展示某些图片,用windows自带的图片工具或者其他工具都能展示出来。 这是为什么呢?Qt中处理图像类的常用类为QImage、QPixmap、QBitmap。这几个类是通过文件的后缀名来认定文件的类型,从而进行解析调用相对应类型模块来显示图片,qt这么做或许是为了加载速度!而不用每次去判断文件类型再来选择用什么模块来加载或者显示。但是这对开发者来...原创 2018-06-21 18:27:06 · 8898 阅读 · 2 评论 -
QT子控件设置qss无效问题
新建了一个 QWidget,里面放了2个 QLabel,模拟 QToolButton,只是想将 ICON 图标做成圆角而已。在Qt设计师里面设置了 QWidget 背景颜色,以及鼠标悬停变色。在 Qt 设计师预览是生效的。可在程序里动态创建添加到主控件里面却死活不显示。解决方法,在子控件QWidget 中重写 paintEvent 函数。(之前的Qss保存不变)void MySubWidg...原创 2018-07-10 09:49:01 · 3688 阅读 · 0 评论 -
QT模拟QToolButton 并将直角图片用代码写成圆角
需求一个按钮有图标和文字,采用 QToolButton 图片文字上下结构,搞定! 由于上述的按钮是固定存在的,美工给做的是圆角图。然后使用场景还有动态增加的按钮,而图片也是用户动态增加的,然后并不一定是圆角图。 为了统一,必须把动态添加的按钮中的 Icon 也搞成圆角矩形。 然而一经查阅并没有现成的方法,于是用个子控件实现,一个QWidget 中放2个QLabel,一个放图标做成圆角...原创 2018-07-10 10:00:39 · 2096 阅读 · 0 评论 -
Qt 无边框窗体拖动(采用Qt事件 和 Win API 两种方式)
Qt 无边框窗体拖动(采用Qt事件 和 Win API 两种方式)Win API 方式包含头文件与需要用到的库#ifdef Q_OS_WIN#pragma comment(lib, "user32.lib")#include <qt_windows.h>#endif发送系统消息,进行移动void Widget::mousePressEvent(QMouseEvent...原创 2019-04-28 16:34:45 · 524 阅读 · 0 评论 -
Qt 已有窗体快速简单实现四周阴影
原文地址:https://blog.youkuaiyun.com/tonny7501/article/details/81748294之前在网上找了很多资料来实现无边框窗口的阴影, 发现不是复杂就是效果不好, 比如图片形式, 只要扩大质量就会严重失真, 会弄疯我们这些强迫症的, 利用纯代码绘画出阴影, 绝对不适合新手和没有绘画细胞的我们, 既然Qt自带阴影效果, 干嘛不直接用呢? 话不多说, 开撸!实现原...原创 2019-04-28 15:25:41 · 1243 阅读 · 0 评论 -
QSettings::value().toString() 读取带英文逗号的文本为空
qSettings.value(“hangupMsg_config/hadSubAccounts”).toStringList();//324,327 逗号分隔最近用QSettings::value读取本地 ini 文档的值,有一项值是用于存储类似123,456,144,55,555 的值,但有英文逗号的话读出就是空 QSettings qSettings("user_config.ini",...原创 2019-04-17 18:52:45 · 4405 阅读 · 0 评论 -
Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径、用户目录路径、临时文件夹等。在 Qt 中实现这几个功能所用的方法虽然都不难,但是各不相同,每次用到时还要现去查,很不方便。因此就写了这篇博客,把这几种需求的实现方式总结了一下。算是个备忘录吧。程序所在路径获取程序所在路径,QCoreApplication 类里就实现了相关的功能:QString QCoreApplication::a...转载 2019-03-29 09:52:41 · 303 阅读 · 0 评论