![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Qt
文章平均质量分 75
XX風
翻山越岭
展开
-
QDialog实现圆角对话框的三种方式
参考链接:https://blog.csdn.net/ajcjldd/article/details/127306630。方式二:QPainter直接绘制圆角矩形(缺点:无法使用qss方式配置背景色,需要根据主题切换brush颜色)方式一:通过QBitMap设置控件有效绘制区域(缺点:容易产生锯齿,锯齿来自于QBitMap)方式三:QDialog中内嵌QFrame,并使用qss设置QFrame对应圆角(缺点:完美)参考链接:https://zhuanlan.zhihu.com/p/513853572。原创 2023-11-01 16:45:08 · 990 阅读 · 0 评论 -
Qt插件机制及加载流程
简介 插件实际上就是一个个动态库,动态库在不同平台下后缀名不一样,比如在 Windows下以.dll结尾,Linux 下以.so结尾。那么开发插件其实就是开发一个动态库,该动态库能够很好的加载进主程序、访问主程序资源、和主程序之间进行通信 Qt Creator插件理解起来其实很简单,定义一个接口类作为基类,其他插件需要继承该类实现对应的虚方法,每个插件作为独立子工程编译后生成对应的动态库主函数加载每个插件对象,然后转化为对应插件实例QPluginLoader loader(pluginN原创 2022-05-24 16:04:12 · 3520 阅读 · 0 评论 -
show()和exec()的区别
QDialog的显示有两个函数show()和exec()。他们的区别在参考文档上的解释如下:show():显示一个非模式对话框。控制权即刻返回给调用函数。弹出窗口是否模式对话框,取决于modal属性的值。(原文:Shows the dialog as a modeless dialog. Control returns immediately to the calling code.The dialog will be modal or modeless according to the valu原创 2021-05-19 09:01:56 · 208 阅读 · 0 评论 -
【Qt】d_ptr指针、p_ptr指针详解
此文章可以参考:Pimpl技术的基本应用PImpl机制以及Qt的D-Pointer实现Qt的d_ptr本质上使用了pimp技术D指针保持一个库中的所有公有类的大小恒定的问题可以通过单独的私有指针给予解决。这个指针指向一个包含所有数据的私有数据结构体。这个结构体的大小可以随意改变而不会产生副作用,应用程序只使用相关的公有类,所使用的对象大小永远不会改变,它就是该指针的大小。这个指针就被称作D指针。/* widget.h */// 私有数据结构体声明。 其定义会在 widget.cpp 或是//原创 2021-03-15 11:25:53 · 2636 阅读 · 0 评论 -
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)
尊重作者,支持原创,如需转载,请附上原地址:https://blog.csdn.net/libaineu2004/article/details/19245205这篇文章有点长,内容有点多,如果时间急迫,可以直接翻页去末尾看结论。红色字体加粗的。(#.#)一、Qt Creator环境设置1、cpp或h文件从window上传到Ubuntu后会显示乱码,原因是因为ubuntu环境设置默认是utf-8,Windows默认都是GBK.我们使用的Windows系统本地字符集编码为GBK。2、Windows环转载 2021-01-23 00:32:29 · 3344 阅读 · 0 评论 -
Qt与vs中对中文的处理 QStringLiteral
QString内部的字符存储使用的是utf-16,接收utf-8的数据格式#include "vs_cn_codec.h"#include <QtWidgets/QApplication>#include <QDebug>#include <QMessageBox>#include <iostream>#include <QTextCodec>#include <windows.h>using namespace std原创 2021-01-23 00:30:23 · 734 阅读 · 0 评论 -
QString格式化字符串转换
1 首先说下字符集。gb18030字符集兼容了gbk字符集,以两个字节表示一个文字。windows系统可能使用的就是这两种的一种。unicode字符集以2个或以上的字节表示一个汉字。通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。utf8字符集以2个或以上的字节表示一个汉字。实际上具体的数值和unicode有很大的相关性。ISO-88转载 2021-01-22 22:53:41 · 1023 阅读 · 0 评论 -
Qt信号槽原理
信号与槽的原理:信号发出后,在槽函数中进行操作,当一个信号对应多个槽函数的时候,槽函数的操作时间不可太长,因为槽函数的执行是排队的(随机),或者开线程处理信号与槽的关系图:主循环:QApplication a;q.exec();...原创 2021-01-21 21:13:53 · 275 阅读 · 0 评论 -
Cmake构建Qt工程
QtCreator构建Cmake工程详细说明使用CMake构建Qt项目原创 2021-01-09 09:35:27 · 555 阅读 · 0 评论 -
Qt内存泄漏总结(包括检测工具)
原文链接:http://blog.csdn.net/taiyang1987912/article/details/29271549关于堆栈不清楚的可以参考这篇文章:http://blog.csdn.net/c_base_jin/article/details/25558929一、简介Qt内存管理机制:Qt 在内部能够维护对象的层次结构。对于可视元素,这种层次结构就是子组件与父组件的关系;对于非可视元素,则是一个对象与另一个对象的从属关系。在 Qt 中,在 Qt 中,删除父对象会将其子对象一起删除。转载 2021-01-09 08:37:55 · 3219 阅读 · 0 评论 -
Qt源码之d指针分析(QObject,QObjectPrivate)
前言阅读过Qt源码的同学一定对d指针不陌生,前段时间其实写过一次关于Qt d指针的文章,但是感觉不够透彻就删除了,这次打算彻底地详细地再分析一次。Pimpl机制对Pimpl机制不熟悉的先熟悉下Pimpl机制Pimpl机制。Qt的d指针其实主要还是采用了Pimpl机制。关于Pimpl机制的优点:降低耦合信息隐藏降低编译依赖,提高编译速度接口与实现分离其实Pimpl机制最大作用是实现二进制兼容,所谓“二进制兼容性”指的就是在升级(也可能是 bug fix)库文件的时候,不必重新编译使用这个库转载 2021-01-08 22:51:54 · 808 阅读 · 0 评论 -
QT源码分析:QObject
QT框架里面最大的特色就是在C++的基础上增加了元对象系统(Meta-Object System),而元对象系统里面最重要的内容就是信号与槽机制,这个机制是在C++语法的基础上实现的,使用了函数、函数指针、回调函数等概念。当然与我们自己去写函数所不同的是槽与信号机制会自动帮我们生成部分代码,比如我们写的信号函数就不需要写它的实现部分,这是因为在我们编译程序的时候,编译器会自动生成这一部分代码,当我们调用connect函数的时候,系统会自动将信号函数与槽函数相连接,于是当我们调用信号函数的时候,系统就会自动回转载 2021-01-08 22:37:56 · 955 阅读 · 0 评论 -
Qt信号与槽的理解
一、信号和槽机制Qt提供了信号和槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数。信号的声明是在头文件中进行的,QT的signals关键字指出进入了信号声明区,随后即可声明自己的信号。信号由moc自动生成,所以不需要在cpp中定义,只需要声明。槽可以有参数,但槽的参数不能有缺省值。信号的参数类型可以与槽的参数类型对应,信号的参数可以比槽的参数多,但不可以少,否则连接将失败。同时发出的信号,原创 2021-01-08 22:02:31 · 461 阅读 · 0 评论 -
QT中的线程与事件循环理解(2)
1. Qt多线程与Qobject的关系每一个 Qt 应用程序至少有一个事件循环,就是调用了QCoreApplication::exec()的那个事件循环。不过,QThread也可以开启事件循环。只不过这是一个受限于线程内部的事件循环。因此我们将处于调用main()函数的那个线程,并且由QCoreApplication::exec()创建开启的那个事件循环成为主事件循环,或者直接叫主循环。注意,QCoreApplication::exec()只能在调用main()函数的线程调用。主循环所在的线程就是主线程,翻译 2021-01-08 07:45:06 · 1118 阅读 · 0 评论 -
QT中的线程与事件循环理解
1.需要使用多线程管理的例子一个进程可以有一个或更多线程同时运行。线程可以看做是“轻量级进程”,进程完全由操作系统管理,线程即可以由操作系统管理,也可以由应用程序管理。Qt 使用QThread 来管理线程。 QWidget \*widget = new QWidget(this); QVBoxLayout \*layout = new QVBoxLayout; widget\->setLayout(layout); QLCDNumber \*lc原创 2021-01-07 22:34:50 · 852 阅读 · 0 评论 -
关于Qt的事件循环以及QEventLoop的简单使用
关于Qt的事件循环以及QEventLoop的简单使用1.一般我们的事件循环都是由exec()来开启的,例如下面的例子: QCoreApplicaton::exec() QApplication::exec() QDialog::exec() QThread::exec() QDrag::exec() QMenu::exec()这些都开启了事件循环,事件循环首先是一个无限“循环”,程序在exec()里面无限循环,能让跟在exec()后面的代码得不到运行机会,直至程序从exec()跳出。从ex原创 2021-01-04 22:23:02 · 2347 阅读 · 0 评论 -
Qt环境搭建
首先安装所有的qt开发库:sudo apt-get install git build-essential cmake qt5-default qtscript5-dev libssl-dev qttools5-dev qttools5-dev-tools qtmultimedia5-dev libqt5svg5-dev libqt5webkit5-dev libsdl2-dev libasound2 libxmu-dev libxi-dev freeglut3-dev libasound2-dev li原创 2020-12-29 21:28:06 · 1048 阅读 · 0 评论