- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 Qt窗口阴影效果
qt中,一些弹窗我们期望有一个阴影的效果。我们可以在ui界面中,对整个窗口的边缘预留10px,然后在构造函数中设置一下的代码,当然还要设置透明属性,然后即可实现。
2024-06-27 11:44:26 353
原创 Qt高分辨率自适应后,获取当前设备像素比
qt常用的高分辨率自适应,在main中设置之后,我们的软件界面就可以根据当前显示器的分辨率,自动缩放了。简单描述一下场景:我们的软件是按照1080p显示器设计的,最后通过AA_EnableHighDpiScaling,可以在4k屏上等比还原(扩大了2倍)。此时,我使用以下方法,获取到的屏幕尺寸都是1920x1080,而不是实际的3840x2160.但与此同时,qt一些桌面屏幕类获取到的屏幕宽度是错误的,当我们想要获取的时候就出现难题了。
2024-06-21 15:04:48 814
原创 Qt+qss动态属性改变控件状态切换的样式
如果我们在ui界面中设置好了控件的布局,那后续我们在代码中想要改变布局,是极其麻烦的,比如我有四个按钮,原本是上下左右排列的,结果来了一个甲方需求,需要变成从左到右的排列。在ui界面中直接添加样式,优点是可以实时看到基本的ui效果,但对于某些需要切换状态的ui,会比较麻烦。例如我预设了一个标签“没信号”的效果,当我的设备有信号时,我需要在代码中进行“有信号”效果的设置,这样一来,我们难免会在代码中进行重复的setStyleSheet,1和2搭配起来可以正常使用,只是难以管理我们的样式。
2024-06-07 10:25:20 1177
原创 Qt pro工程文件编写汇总(区分debug和release、32位和64位的方法,编译输出目录等)
然而,随着开发需求越来越多,首先单个项目用到的库非常多,并且各种版本,兼容32/64位的库,往往会把pro文件搞得很乱,而一旦需要从32位更换64位,又想换成debug模式的话,往往编译出几百个错误,大多都是库链接不上的问题,这个时候问题排查可能就很耗费时间,也很让人崩溃( LNK2001: 无法解析的外部符号这种编译报错,没有给出真正的原因,总是让人很暴躁崩溃)总而言之,进行qt开发的时候,pro文件兼容debug/release,支持32位/64位,这样会比较方便,而且也是一个好习惯。
2024-05-22 10:24:06 2370
原创 Qt控件样式设置其一(常见方法及优缺点)
在我看来,ui界面是qt的一大创新,也是方便开发者的利器,其本质是通过ui文件,生成你需要的头文件,本质上跟你用代码编写是一样的,ui界面只是一个直观的布局工具而已。最为常见的方法,也是新手接触的第一个方法,是在ui文件中通过拖拉预设部件制作你需要的界面,然后在每一个界面中编辑控件的样式表。但这种方法随着需求的复杂程度,会越来越鸡肋,例如控件的状态切换和隐藏、窗口最大化的拉伸效果、不小心代码上重新设置了界面,死活找不出样式未能实现的原因等,特别是还遇到了换肤这种麻烦至极的要求,你会痛苦不已。
2024-04-02 11:07:55 639
原创 Qt桌面白板工具其三(解决半透明桌面画布刷新透明像素时产生耗时,导致的画笔卡顿问题)
所以,第二种方法较好。最终,我发现了造成25ms延时的问题所在:子窗口触发paintEvent的同时,父窗口也会触发paintEvent,即我每一次刷新我的QImage图像时,都还会让父窗口刷一遍半透明像素颜色…刷新半透明像素点,本质上也是刷新QImage,所以QRect的区域,在我们moveEvent中采集点的过程中,实时去计算,目的是将“本次update的线段”都包含在QRect中。于是我想到了,干脆不要父窗口了,在子窗口中,半透明像素的刷新和QImage的显示,同步在paintEvent中做……
2024-03-07 16:43:32 1315
原创 Advanced installer自定义默认安装路径
如标题,以前弄过,现在忘了,死活弄不出来。搞了半天终于弄出来,赶紧记录一下hh。有别的需求,条件判断什么的,可以参考这篇。
2023-12-12 17:41:20 1449
原创 Qt界面最小化后恢复界面不能刷新,出现软件假死的情况
今天遇到一个奇怪的问题,软件最小化即QWidget::showMinimized(),然后再show()恢复之后,软件界面假死不动了,所有的按钮样式,滑动条等都没有反应,但点击之后是有效的。滑动条实际上是有拖动的,但按钮完全不动,反正整体的界面完全卡住不动了,非常奇怪。因为同样的一套代码,别的程序并不会出现这种现象,感觉是那个地方修改了导致的,就连使用了控制刷新的接口setUpdatesEnabled()也无效,所以原因暂时不明。于是百度,在showEvent重载函数中修改后解决了。
2023-12-12 15:57:19 962 2
原创 百度人脸识别win C++离线SDK只能同时识别出一个人脸的问题
简单来说,就是运行sdk后,无论是使用示例图片还是usb摄像头,都只能同时检测出一个人脸。然而程序里并没有,找了半天,居然是在sdk文件夹/conf/detect.json里面,然而他居然默认max_detect_num=10.这个问题初次遇到的时候,大概率猜测是什么参数的问题,然后在程序里使劲找,百度也找了半天,好像是一个max_detect_num的参数。先说明一下,这个问题已经解决了,但真的很想吐槽一下官方的指引。这我就崩溃了,找到这个参数,然而他默认就已经是10了。改完之后就可以了。
2023-11-16 16:08:58 381 1
原创 Qt窗口布局之合并与拖出
在某些应用场景中,我们可能期望窗口能够塞入已有的布局,又能脱离出来单独显示。举个例子,你创建了五个窗口,你希望五个窗口既能塞入到一个窗口中布局,又想随时控制将单独一个窗口脱离出来,独立于原本的大窗口显示,如图:这里尝试了两种方法,均能实现,但推荐第二种方法一开始执着于删除hboxLayout ,其实是怕控件会残留在里面什么的。这方面如果你不清楚布局和窗口之间的布局,其实还挺让人头疼的。比如你不设置父指针为空,你就会卡在为什么不能将它移出大窗口的烦恼中,明明我已经将控件移出布局了啊。
2023-09-27 18:23:11 1010
原创 Qt桌面白板工具其二(荧光笔的实现方法并解决透明度导致的重合深色点问题)
在上一篇文章中,我主要分享了有关贝塞尔算法解决曲线不平滑的问题,简单来说我们可以通过算法,对所搜集的一系列点进行重新绘制,在画布中绘制我们需要的QPaintPath路径。上面都是题外话了,本篇文章中想要实现的,是在move过程中,即便采用线段叠加,也能实现荧光笔的效果。这个要求,需要我实现线段叠加的时候,不能产生重合区域颜色较深现象。所以,本文第一张图的绿色重合点,就能完美解决了,即半透明绿色线段的叠加,重合部分只会显示后一条线段的颜色,透明度通道不会产生叠加,进而形成一条完整的半透明统一透明度的线条。
2023-09-01 12:11:59 404
原创 阿里云OSS对象存储上传文件(二)C++上传(含代码)
比如上传一个100M的视频文件,用简单上传来整个文件上传,以及使用分片上传,按照100k分片,循环上传1000次,耗时上是有显著增加的。(2)官方文档中有进度条回调的使用,但注意,不管是对简单上传还是分片上传,它的本质上都是对单次上传的进度条反抗,放在分片上传中,就是对单个切片的进度反馈,而不是一整个的。简单查看官方文档后,会发现它具备了好几种上传方法,包括简单上传,追加上传,断点续传上传,分片上传,等。当你知道的,切片不一定会超过100份,假如只有10份,那进度反馈将是跳跃式的,给人直观上不好。
2023-08-21 15:09:11 897 2
原创 阿里云OSS对象存储上传文件(一)SDK安装
(3)third_party目录下,选择你需要的dll,拷贝到程序运行目录下(我用的是32位,\third_party\lib\Win32,将里面的dll全部拷贝)这里有一个问题,生成的lib是debug版本的,亲测release版本无法使用,会编译错误。因为实际项目需求,需要使用阿里云oss的对象存储来上传文件,在写代码操作之前,需要先安装SDK,编译你能使用的lib。cmake能正常用后,在第一步解压的sdk文件夹下,新建一个build文件夹,用来放后续生成的东西。”,即可在build下生成所需文件。
2023-08-09 12:24:24 943 2
原创 QT QTimer单次触发槽函数延时处理
这种情况下,会发现提示窗口并没能及时显示出来,而是等耗时操作完成之后。这是因为是同一线程的操作,会存在这种先后关系的。这时,我们可以通过定时器来进行信号槽的触发,让耗时操作稍作延后。但常规的写法会相对复杂,要新建一个QTimer对象,然后再单独弄一个槽函数出来,最后再connect,费时费力。而如果用以下单次触发的方式,结合lambda表达式的写法,就能在同一段代码中实现我想要的操作了。同一函数当中中,可能会先show一个提示窗口出来,然后紧接着就进入一段耗时代码,比如。
2023-05-26 10:21:38 775
原创 QT QFileDialog获取目录情况下的汉化翻译问题
但是你会发现,这里的标题是我们指定的,但像“文件夹”、“选择文件夹”、“取消”这些文本,却没办法指定。这里用了QObject::tr(“Open”)而不是QString(“Open”),这是因为想要用qt的语言家翻译,必须用QObject::tr来标志过后,才可以进行翻译。这样的话,我们只需要用qt的翻译功能,在我们需要的时候加载一遍就行了,无需用什么if/else这种繁琐复杂的流程。FileName指的是上图的“文件夹:”,Accept和Reject分别是确定和取消,其他两个暂时没有用到过。
2023-04-27 15:09:41 583
原创 QComboBox文字居中的实现办法
QComboBox的文字居中,下拉选项实现起来非常简单,但是本身的空间文本框默认是靠左的,想让他居中非常费劲,网上找到的一些方法都特别复杂,最后实现出来或多或少都有问题,没能完全满足我的需求。但最后终于找到一篇可以实现的了,虽然代码我也没太理解,但是效果不错。放到我本身的代码当中,外部对该对象进行样式表设置setStyleSheet,也是可以成功应用的,虽然和列表选项没有完全对准,但是是正常的啦。然后呢,他主要的实现方式是QComboBox控件重载paintevent,光是这一步就可以实现功能了。
2023-04-12 18:34:14 4139
原创 Qt解决使用无线网络模块时的网络波动问题
也就是说,调用QNetworkAccessManager类之后,就会出现这种现象。最近在实际项目开发中遇到了一个问题,当软件打开,与后台通过网络接口通信后,是将Qt的默认10s改成-1s也就是不检测能显著消除网络波动。为了解决这个问题,甚至换了第三方库来实现网络通信,最后发现。后来查明白这其实是一个bug,又或者说是。(因为某种原因,我用的是5.6.3),导致图像采集卡顿延迟。
2023-02-06 09:29:22 369
原创 Qt通过代码修改ui文件设置的部件间伸缩比例
qt中,在ui窗口对布局的设置很方便,比如窗口内放置两个QWidget部件,左右放置布局,并如图在layoutStretch中设置他们的比例,之后无论窗口怎么放大拉伸,这两个控件的缩放比例都是固定的。那么如果代码中想要修改这个比例关系,该怎么办呢?
2023-02-01 15:49:39 1409
原创 Qt中点击关闭任务栏窗口而不析构窗口的实现方法
在我的代码里,是界面右上角的一个关闭按钮槽函数,会停止相应的功能并隐藏窗口,但不意味着窗口就析构消失了。close会隐藏窗体 ,会触发closeEvent,你可以自己重写closeEvent来控制隐藏或不隐藏,或自己的逻辑,但是默认情况下是不会触发窗体的析构函数的;如果在任务栏的窗口,点击“X”关闭后,会直接调用这个窗口类重载的closeevent,如果仍由其直接传入基类qwidget里的closeevent,就可能直接析构窗口。的意义也会发生变化,并不会析构接口,应该delete ComboWin;
2023-01-05 14:37:54 1310
原创 QT解决报错registered using qRegisterMetaType()
注意,不是在定义类型,或者定义结构体的地方进行注册,而是在所需要用到的类的构造函数中进行注册,比如我的一个自定义类,需要用到自定义的结构体做信号参数,就在他的构造函数中注册一下。在qt日常使用中,信号与槽机制是绝对不可或缺且常用的,其中的参数一般都会比较简单,bool、int、QString之类的,但当我们想要传递相对比较复杂的参数,例如。原因大概就是信号槽的参数不支持你自定义的类型,只能识别QT库中最基本的类型参数,所以需要对自定义类型进行注册。注册完就不会报错,能够正常使用了。
2022-11-04 12:13:32 5675
原创 QButtonGroup取消全部选中项
比较常见的一种需求是,让组内的按钮互斥,实现点1取消2,点2取消1的效果,为的就是让用户只选择唯一的项。另外一种做法是添加一个隐藏的按钮,通过对它的指定来实现真正按钮的全取消,但这样不仅会对我的ui界面产生混乱,而且也没有本质上解决这个互斥问题,故还是采用代码方法为好。比如我有一个btn_true和btn_false,当我代码中依次将他们setCheck为false时,后设置的那个为假,先设置那个又因为互斥关系被迫变为真了。在ui界面中,也可以通过如下操作,快速将需要指定的按钮放到一个组里面,
2022-10-17 14:55:34 1846
原创 QNetworkAccessManager实现ftp功能总结
因为项目需要,第一次接触到FTP的上传问题,经过查阅后摈弃了旧的QFtp,采用新的QNetworkAccessManager。有关它的使用其实也很方便,已经提供了比较成熟的接口和信号,下面总结一下。首先,在头文件创建一些变量和指针url是之后需要上传的FTP服务器文件路径;QNetworkAccessManager 就是所谓的网络访问管理器,主要靠它来进行文件上传;QNetworkReply 是QNetworkAccessManager 上传时的一个回复对象,可以通过它来得到一些返回的信息然后,是cpp文
2022-06-28 11:40:23 2959
原创 QT实现窗口渐变消失QPropertyAnimation+QProgressBar进度条
遇到一个需求,有关FTP的上传,打算做一个进度条显示,最后渐变消失这样的一个效果。那首先就是要验证渐变消失的可能性,于是查到QPropertyAnimation这个东西。具体的代码如下:可以看到,代码非常简洁,几句话就能做完渐变消失的效果了。1.new时,windowOpacity也就是窗口/部件的不透明度,意思是接下来的动画效果所对应的是不透明度的属性2.setDuration,设置持续时间,1000也就是一秒钟3.setStartValue和setEndValue,分别设置了开始值和结束值4.
2022-06-21 11:29:49 1456
原创 QT模拟鼠标事件,实现点击双击移动拖拽等
之前有涉及过一个远程桌面控制的项目,需要传一些指令给远程的电脑,实现简单的桌面点击、移动、拖拉等功能,当时没有时间实现得很好,今天又研究了一下,故此记录。虽然我用的是QT,但核心涉及的还是系统的API,所以其他平台应该也是一样的。废话不多说,直接上代码。mouseacts.h:#ifndef MOUSEACTS_H#define MOUSEACTS_H#include <QWidget>#include "Windows.h"//这是引入Windows操作系统的API#in
2022-05-30 15:16:30 8588 4
原创 QWidget代码设置样式表探讨
前言众所周知,在QT中修改部件样式,是通过样式表的方式来设置的。而设置样式表,一般常用就两种方式,分别为QT Designer界面直接右击设置样式表,以及代码设置样式表。正常情况下都是可以成功的,但是在某种情况下却不成功,让我娓娓道来。两种样式表设置方式的对比第一种,QT Designer界面直接右击部件,在样式表选项里面输入。右击在background-color里面随意设置一个颜色,这就是最简单的样式表设置了。意思是,设置一个蓝色的背景颜色。有关样式表语句的相关语法,可以慢慢学习,其实还
2022-05-23 16:57:57 3579
原创 QT有关QCobobox控件的样式设置(圆角、下拉框,向上展开、可编辑、内部布局等)
前言:QT设计界面时,难免会遇到修改QCobobox样式的问题。相比于其他的QLabel、QPushButton等控件,QCobobox的样式设置明显困难并复杂很多。以下介绍一下目前为止,本人参考网上代码,制作的一款QCobobox下拉框的样式风格。效果图:基础样式表:/*QCombobox主体*/QComboBox { border: 2px solid #f3f3f3;/*设置线宽*/ background-color: rgb(237, 242, 255);/*背景颜色*/
2022-03-18 10:12:51 26843 3
原创 QT实现窗口置顶、置顶状态切换、多窗口置顶优先关系
我们使用QT进行界面开发时,可能会遇到需要将窗口置顶的情况。最常见的就是,需要制作一个悬浮工具栏,悬浮菜单,甚至是悬浮的画板。这就意味这我们需要将这个窗口置顶于“系统”以及我们自己“软件”的窗口之上。其实实现的方法很简单,就是在创建这个窗口类的时候,在构造函数中的加一个Qt::WindowFlags枚举标识Widget::Widget(QWidget *parent) : QWidget(parent,Qt::Widget | Qt::WindowStaysOnTopHint) , u
2022-03-16 10:22:10 22479 10
原创 QT实现圆角窗口
用QT做界面开发的时候,时不时会有一些比较刁难人的样式要求,比如你需要将一个独立窗口,设置成圆角样式。//UI文件中,对最外层窗口的样式设置#ChooseUsbCamera{ //类名 background-color: rgb(255, 255, 255); //背景颜色(白色) border-radius: 10px; //四角圆角的直径 border-style:solid; //边框样式(实线) border-width:2px; //边框宽度 border
2022-03-15 09:35:20 3487
原创 Advancedinstaller安装包自定义操作打开文件
Advancedinstaller安装包自定义操作打开文件说点牢骚走过的坑第二个坑合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入说点牢骚先说一下我的项目需求,简单来说就是需要在程序安装结束或者过程中,调用我安装包里面的两个安装文件。这个
2021-09-27 09:34:21 2058 2
QT按钮点击切换QLineEdit焦点
2022-06-07
QT模拟鼠标事件,实现点击双击移动拖拽等
2022-05-31
请问有办法调用dll中的类吗(标签-QT|关键词-get)
2023-10-09
qt中执行阻塞耗时步骤前修改ui无法立即响应,如何解决?
2023-01-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人