Qt
哎哟哟爱民谣
这个作者很懒,什么都没留下…
展开
-
Qt实战 UI只能运行在主线程吗?
对于习惯了Qt开发的同学来说,都习惯了将UI放在主线程,因为自动生成的main函数中,也是窗口在主线程启动的,所以,很容易习惯性地认为UI只能运行在主线程,其实不然。UI其实是可以运行在用户定义的线程中,只要将Qt QApplication的时间循环定义在线程中,并在该线程中启动并执行该事件循环即可。原创 2023-05-23 23:44:47 · 515 阅读 · 0 评论 -
基于ZLMediaKit实现同步发送接收数据的TCP Client
本来是个Qt项目,按理说使用QTcpSocket岂不是更好,但是,QTcpSocket在多线程方式下使用时,各种报错或警告,原因是非多线程安全,如果改造成多线程安全,各种信号槽,又不怎么优雅。所以,基于ZLMediaKit写了一个,代码,贴在此处,大家帮忙参谋一下,存在哪些问题?原创 2023-05-02 12:55:00 · 226 阅读 · 0 评论 -
Qt Quick和Qt Widgets怎么选型
当我们在开发一个应用时,经常发愁Qt Quick和Qt Widgets该如何选,Qt Quick界面比较优美,而Qt Widgets设计的界面更加原始,实现好看的UI会麻烦一些。起来像本地 Linux、 macOS 和 Windows 应用程序。在移动或嵌入式设备或 MCU 上运行。.我们建议使用Qt Widgets。是大型标准行业类型的应用程序。.我们建议使用Qt Quick。很好地集成到底层平台中。包含动画和图形效果。原创 2023-01-11 10:54:23 · 699 阅读 · 0 评论 -
Qt 实现滚动请求数据的方法
以QListWidgt为例QTreeWidget的实现方式可以以此示例作为参考去实现,这里不再做实现。MainWin.h#ifndef MAINWIN_H#define MAINWIN_H#include <QWidget>#include <QList>QT_BEGIN_NAMESPACEnamespace Ui { class MainWin...原创 2020-02-22 21:21:26 · 1467 阅读 · 0 评论 -
Qt 解决网络传输数据分块导致数据解析后乱码
当接收到网络数据,可能多字节编码的字符被分到了2个块中,这可能会导致数据丢失或数据转换失败。解决这个问题的方法就是为这个编码创建一个解码器对象,在整个解码过程中使用这个解码器。示例如下:QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");QTextDecoder *decoder = codec->makeDecoder(...原创 2020-02-08 12:00:44 · 508 阅读 · 0 评论 -
Qt QStringLiteral(str)有什么用
Qt 为我们提供了 QStringLiteral(str) 宏使用 QStringLiteral 宏可以在编译期把代码里的常量字符串 str 直接构造为 QString 对象,于是运行时就不再需要额外的构造开销了。如果编译器支持,则 QStringLiteral 宏在编译时从 str 生成一个 QString 的数据。在这种情况下从 QStringLiteral 创建一个 QString ...原创 2020-01-28 23:28:49 · 10943 阅读 · 0 评论 -
Qt QT_WIDGETS_LIB和QT_GUI_LIB的区别
如果定义了QT_WIDGETS_LIB,那么应用程序的对象就是QApplication;如果定义了QT_GUI_LIB,那么应用程序的对象就是QGuiApplication;否则,应用程序的对象就是QCoreApplication。如果使用qmake,并且配置中包含QT += widgets,那么就会自动定义QT_WIDGETS_LIB;类似的,如果使用了qmake,并且配置中包含QT ...原创 2020-01-28 22:30:28 · 1227 阅读 · 0 评论 -
Qt QWidget之捕获
窗口的捕获参考 Qt截图抓屏方法鼠标捕获未显式捕获鼠标的控件将得不到焦点QLineEdit* edt1 = new QLineEdit(this);QLineEdit* edt2 = new QLineEdit(this);edt2->grabMouse();键盘捕获未显式捕获键盘的控件将不得不到输入字符文字QLineEdit* edt1 = new Q...原创 2020-01-27 16:51:12 · 670 阅读 · 0 评论 -
Qt 截图抓屏方法
QWidget的render方法QPixmap pixmap(widget->size()); widget->render(&pixmap);QPixmap的grabWidget方法QPixmap pic = QPixmap::grabWidget(widget);QPixmap的grabWindow方法QPixmap pic = QPixm...原创 2020-01-27 16:05:26 · 812 阅读 · 0 评论 -
OpenCV获取视频文件时长
#include "opencv2/opencv.hpp"using namespace cv;VideoCapture capture(“d:/test.mp4”);if (!capture.isOpened()){ return;}// 时长计算int iVideoTime = capture.get(CV_CAP_PROP_FRAME_COUNT) / captu...原创 2020-01-20 14:08:41 · 2299 阅读 · 0 评论 -
如何让VS2015在release模式下进行调试
步骤如下:工程名称上,右键→属性 c++→常规→调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi) c++→优化→优化 选 已禁止(/Od) 链接器→调试→生成调试信息 选 是 (/DEBUG)...原创 2020-01-20 12:04:12 · 255 阅读 · 0 评论 -
Qt Qt Creator中中文编译失败和乱码
场景1:在Qt Creator中使用msvc的编译器编译,报错“常量中有换行符”原因:MSVC编译器只支持utf-8带BOM的方式,对UTF8格式的代码文件支持不够好,而默认的文件编码是utf-8格式。解决方案:(1)打开Qt Creator,点击菜单“工具”-“选项”(2)在“文本编辑器”-“行为”选项卡中,将文件编码更改为 UTF-8,并且选择“如果编码是UTF-8则添加”...原创 2020-01-11 11:41:12 · 827 阅读 · 2 评论 -
Qt 为应用程序添加图标
1、如果使用qmake生成makefiles,你只需要在.pro文件中添加下面一行语句即可:RC_ICONS = myappico.ico然后,重新生成Makefile和你的应用程序。现在.exe文件在资源管理器中就会显示设置的ico图标。2、如果你已经有一个.rc文件,例如,名称为myapp.rc,你想用它来设置应用程序的图标,那么你要完成下面两个步骤(1)首先,在mya...原创 2020-01-10 23:26:24 · 545 阅读 · 0 评论 -
Qt之事件过滤器event filter
敬请期待。。。。。。原创 2019-12-05 16:02:46 · 175 阅读 · 0 评论 -
Qt之编译时Z-order的warning
常用Qt的同学,在编译GUI的应用程序时,肯定都遇到过Z-order的warning,检查ui文件的也没有发现任何的不对。对于像我一样有强迫症的人来说,真是恶心的不行。今天就把这个问题的来龙去脉给大家讲一讲。带我慢慢道来。一、创建一个ui文件,如下图所示窗口组件由两个弹簧、两个QPushButton组成。应该很多同学都知道.ui文件实际为xml格式的文本文件,那么,我们就打开看...原创 2019-12-04 23:01:11 · 1145 阅读 · 0 评论 -
Qt之raise()和lower()
估计很多人在碰到Qt中的这两个接口时,可能都是一脸懵逼,貌似从来没有用过,但是最近工作中遇到的一个bug,让我深刻体会到这两个接口的重要性。恰恰是平时不受我们待见的接口,关键时刻起到了四两拨千斤的作用。测试提的bug大意如下:视频播放窗口由全屏变为非全屏时,有一个控件被覆盖了,有时覆盖部分,有时覆盖全部。针对这个小问题,折腾了好久,中间还把控件在使用时new,不使用时delete。...原创 2019-12-04 08:32:41 · 14246 阅读 · 0 评论 -
Qt应用程序(Windows桌面应用程序)拖拽功能不起作用
Win7及之后的Windows操作系统与原来的XP和Win2003相比,安全控制方面变得更严格。比如,当我们以administrator登陆XP或Win2003时,运行所有的程序都是以管理员的身份启动的。但当以administrator登陆Win7时,通常状态下,运行普通程序是以普通用户的身份启动的。当我们开发的winform、mfc或基于Qt开发的应用程序需要以管理员的身份运行时(比如,为了访问...原创 2019-08-14 07:59:25 · 2364 阅读 · 12 评论 -
qss(css)部分失效
前两天在调试qss时候,发现只有部分qss样式生效,后面一部分怎么调试都不起作用,折腾了好久,都不知道什么原因。研究了好久,突然发现QWidget是黑色,难道是格式不对导致的?原来是前面的QPushButton#btnMore后多了一个逗号,notepad++检查到格式不对,所以QWidget有蓝色变为了黑色。应用程序加载qss后出现格式问题以后的样式全部失效。解决方法:去除多余的逗号...原创 2019-08-14 08:14:55 · 1251 阅读 · 0 评论 -
QFontMetrics 实现文字显示长度控制
简单示例:QFont font("times", 24);QFontMetrics fm(font);int pixelsWide = fm.width("What's the width of this text?");int pixelsHigh = fm.height();如何实现QLabel中文字较多时尾部阶段并省略号补充QString str = "快递...原创 2019-08-14 08:23:54 · 2140 阅读 · 0 评论 -
10分钟教会你正则表达式
一个正则表达式,是一个字符,或者是一个字符集的缩写,或者是用方括号抱起来的一些字符的集合,或用圆括号括起来的表达式。[A-Z] 匹配A-Z之间的字符x{1,1} 只匹配一次xx{1,5} 匹配至少1次,至多5次x[0-9]{1, 1} 只匹配一个数字[0-9]{1, 2} 匹配0-99如果需要匹配整个字符串,就需要借助^和$:当^在正则表达式的开头时,...原创 2019-08-15 08:14:38 · 185 阅读 · 0 评论 -
教你如何实现带复选框的ComboBox(自定义QComboBox)
Qt提供的QComboBox只能选择其中一个选项,无法实现同时选中多个,而实际工程项目中,下拉框中带复选框的需求比比皆是。阅读了网上大量的博客,但是没有发现一个能完美的实现该功能的ComboBox,都存在各种未解决的bug缺陷,样子是那么回事儿,但是里子经不起推敲。经过笔者多次熬夜,接近通宵,工程中反复使用、测试,bug逐渐被解决。请读者转载时,注明来源,谢谢!!!废话不多说,下面就教大家...原创 2019-08-28 23:02:10 · 19203 阅读 · 21 评论 -
Qt 使用正则表达式进行密码校验
密码长度为8-16位,且必须为数字、大小写字母或符号中至少2种bool IsMatchRegX(const QString& str){ QString reg = "^(?![\\d]+$)(?![a-zA-Z]+$)(?![^\\da-zA-Z]+$).{8,16}$"; QRegExp rx(reg); bool ok = rx.exactMatch(...原创 2019-09-27 15:44:12 · 1748 阅读 · 0 评论 -
QTableView样式设置过程中的问题解析
一、设置QHeaderView表头时可能遇到的问题在设置QTableView的表头QHeaderView的qss样式时,我们和容易在Qt帮助文档或互联网找到其qss样式,例如类似下面的样式代码:QHeaderView{ font-size: 12px; color: rgb(255, 255, 255); max-height: 30px; min-he...原创 2019-08-03 15:17:03 · 1524 阅读 · 0 评论