Qt
smile_sambery
这个作者很懒,什么都没留下…
展开
-
Qt中槽函数触发两次的两种场景分析
在Qt开发中,有两种情况能够触发槽函数被触发两次,第一种情况是必现的,属于错误的写法,是指信号和槽关联两次;第二种情况是偶然出现的,是指对信号没有正确理解导致的。1.信号与槽关联两次 通常这种情况下发生在混合编程的情况下,即既使用了UI来进行布局,又使用来代码来关联信号,使得信号和槽关联两次。不妨以QPushButton中的button为例,通常在使用ui文件布局中自动生成的文件中会调用这样一句话:QMetaObject::connectSlotsByName();这样则代表...原创 2020-06-08 23:40:52 · 2530 阅读 · 2 评论 -
Qt中QLabel的背景图片设置问题
在Qt开发的过程中,经常会遇到设置Label的背景图片问题,通常可以有一下两种方法设置: 方法1:通过setScaleContents来设置(有时候会出现svg图片无法自适应label大小的问题)QPixmap pixmap("***.svg");label->setFixSize(80, 80);label->setPixmap(pixmap);label->setScaleContents(true); 方法2:通过QSvgRender来设置...原创 2020-06-06 18:03:54 · 3938 阅读 · 1 评论 -
Qt 编译错误 LINK2001:无法解析的外部符号 public: virtual struct QMetaObject const thiscall Widget::metaObject
对于Qt来说,signal和slots是Qt的核心,而对于信号来说,只有继承了QObject的类,并且在类中添加Q_OBJECT宏,信号才能有效地和槽建立连接。可是在Qt开发的前期,可能预测不到需要在类中添加信号(也就是说没有添加Q_OBJECT宏),但是在后期开发加上Q_OBJECT宏和对应的信号时,重新执行qmake和build流程后,却会出现错误,错误代号是LINK2001:无法解析的外部符号 "public: virtual struct QMetaObject const * __this...原创 2020-06-06 17:47:10 · 2658 阅读 · 0 评论 -
Qt控件大小自适应电脑分辨率问题
在最近的Qt工具开发工程中,发现一个问题:在自己电脑(分辨率是1366*768)上开发出来的工具,发布给同事(分辨率1920*1280)使用的过程中却出现了空间字体,边框等变形的问题,最后发现原因是因为在样式设计中,混合使用pt和px设置样式。 pt,全称是point,确切的来说它是一个专用的印刷单位“磅”,大小为1/72英寸,它是自然界的一个标准长度单位,属于绝对长度。 px,全称是pixel,确切的来说它不是自然界的长度单位,它可以很大,也可以很小。如果pixel很小,也就是...原创 2020-06-06 09:42:55 · 3946 阅读 · 2 评论 -
Qt中的QByteArray和自定义结构体之间的相互转换
在Qt项目开发中,经常会碰到自定义结构体和字符数组之间的转换问题,不妨假设结构体名字为custom_struct, 字符数组名字为array_data1. QByteArray转换为自定义结构体custom_struct *struct_data = reinterpret_cast<custom_struct *>(array_data.data());2. 自定义结构...原创 2020-05-07 22:22:16 · 8500 阅读 · 17 评论 -
QString转化为const char *出现乱码问题
对于Qt项目开发中,常常会遇到QString和const char*的转化问题,Qt也提供了响应的API接口,可以把QString转化为QByteArray,然后再转化为const char *,具体代码如下:QString string("helloWorld");const char *str = string.toLatin1().data(); 但是调用接口才发...原创 2020-04-11 10:08:57 · 2202 阅读 · 4 评论 -
Qt编译错误:无法解析的外部符号 __imp__CloseServiceHandle __imp__OpenSCManager
在项目开发的过程,我在Qt的pro工程文件中添加了一个静态库,编译工程后报了这个错误,一开始以为是静态库有问题,验证之后发现静态库是正确的,最后才发现CloseServiceHandle和openSCManager这几个API都保存在系统库Advapi这个系统库中,Advapi32是一个高级API应用程序接口服务库的一部分,包含的函数与对象安全性,注册表的操控以及事件日志有关,而我添加的这...原创 2020-04-11 09:39:42 · 1106 阅读 · 0 评论 -
Qt eventFilter实现信号与槽
对于Qt来说,信号与槽机制是其通信的一大亮点,但是Qt中也提供了其他的方法实现数据间的通信,如invokeMethod反射机制实现通信(https://blog.csdn.net/xx18030637774/article/details/105017306),另外Qt还提供了使用eventFilter来实现数据通信,具体实现如下:1)首先使用eventFilter来进行数据通信的对象...原创 2020-03-21 22:16:42 · 362 阅读 · 0 评论 -
Qt使用invokeMethod反射机制实现线程间的通信
对于Qt来说,UI线程是主线程,对于同一UI线程中对象的通信可以通过connect进行信号与槽关联来实现,但是当UI中对象A中的子线程B需要和另外UI对象C进行通信的时候,如果这个时候使用connect来进行通信的话,需要B对象和A对象进行关联将信号发送到主线程中,然后A对象和C对象再建立联系,这样处理起来会比较繁琐。Qt提供了invokeMethod反射机制,就可以实现任何线程中的数......原创 2020-03-21 21:52:23 · 3125 阅读 · 4 评论 -
Qt自定义数据类型注册meta-object system
在Qt项目开发过程中,有时候会碰到需要使用自定义数据类型作为信号或者槽的参数进行数据传输,由于信号或者槽中的参数必须为Qt meta-object 系统中能够识别的参数,但是自定义数据类型仅仅只是程序代码编写者自己知道,编译器在编译的过程中并不知道这种参数类型,但是Qt中提供了Q_DECLARE_METATYPE和qRegisterMetaType来实现具体的功能,具体实现如下:...原创 2020-03-21 20:54:52 · 782 阅读 · 0 评论 -
Qt自定义对话框中边框阴影实现
1. 对于Window系统或者Unix系统,QDialog有一个默认的边框(样式看起来有点复古),不过Qt可以提供自定义的边框设计,通过设置对话框相关属性:setWindowFlags(Qt::Dialog | Qt:: FramelessWindowHint); //设置不适应默认边框setAttribute(Qt::WA_TranslucentBackground); ...原创 2020-03-15 10:01:59 · 1715 阅读 · 0 评论 -
解决QTreeWidget中item无法整行同时显示相同颜色
对于QTreeWidget来说,继承自QTreeView,因此设计QTreeWidget中的样式设计,归根结底是对QTreeView的样式设计,而对于QTreeView中item样式设计,可以分为对branch和item设计,另外QT Style Sheet可以通过设置show-docoration-selected的值来提供精细化样式设计,具体样式代码如下:QTreeWidget {...原创 2020-03-15 09:14:57 · 1351 阅读 · 0 评论 -
Qt实现对json文件的解析
json是一种轻量级的数据结构,其内部的结构是一种键值对(key-value)的组合,最外层是{ }。key是带双引号的字符串常亮,用于获取和存储;value的值可以是bool变量,字符串常量,对象或数组(也是一个key-value的组合,以 [ 开头,以 ] 结尾),具体json格式介绍可参考博客:https://www.cnblogs.com/hwtblog/p/8483573....原创 2020-03-08 18:38:32 · 933 阅读 · 0 评论 -
Qt中的四种信号与槽的连接方式
1. UI界面右键点击控件,选择“转到槽“,系统会在cpp中自动添加这个组件对应的槽函数2.在Ui界面的下面 siga如l & slot editor栏中手动添加3.在代码中使用connect显示添加4. 使用on_对象名_事件名隐式连接,以QPushButton为例QPushButton *button = new QPushButton(this);bu...原创 2020-03-07 16:40:32 · 3244 阅读 · 0 评论 -
QQuickWidget + QML编程实现酷炫动态动画效果
1.具体需求:当Qt开发项目中需要实现简单的动态酷炫动画效果时,我们可以使用Qt中的QQuickWidget来实现,同时还可以使用QML编程来实现具体的动画效果,具体实现的效果如下所示:2.具体操作和实现效果图: 1)按下start按钮,音乐播放界面开始播放,然后出现旋转界面(界面的变化可以通过QML编程来具体实现); 2) 按下stop按钮,音乐播放界面停...原创 2020-03-07 16:12:24 · 3226 阅读 · 1 评论 -
QTextEdit实现图片和文本同行显示
1.开发环境:Qt 4.7.3 + MinGW 32bit (MSVC2015 32bit)2.实现大纲: 1)实现图片和文本在同一行显示,且能够设置字体大小和颜色 2)能够手动设置行的宽度和间距 3)设置字体样式,然后添加图片,字体样式重置成默认状态3.具体实现: 1)QTextEdit支持文本和图片显示,通过将图片...原创 2020-03-01 23:41:07 · 4111 阅读 · 0 评论 -
QT自定义MainWindow
1.开发环境:Qt 4.7.3 + MinGW 32bit (MSVC2015 32bit)2.实现大纲: 1)自定义边框,标题栏,工具栏,内容栏,状态栏(后面三个代码中没有实现实现) 2)重写鼠标事件来控制可以自由移动框体 3)样式文件使用qss实现,UI设计/数据/控制分离,方便二次开发3.具体实现: ...原创 2020-02-29 17:37:19 · 3355 阅读 · 0 评论 -
Qt使用qss文件管理stylesheet
内容总结简介:1)使用.qss后缀的文件来管理Qt中每个类的具体组件的stylesheet设置。2)在类中使用具体.qss文件中的设置。3)解决控件中多个相同组件不同设置或者同一个控制不同子控制或者伪状态的问题。1.新建后缀名为.qss的文件管理stylesheet设置1)右键单击工程名字,add new ->Qt->Qt resource file,将文件名字取为res.q...原创 2019-12-16 16:51:20 · 718 阅读 · 0 评论