QT
qq_40170041
博客就是备忘录,这里主要记录一些学习的内容或者总结
展开
-
QT常用高频快捷键
Ctrl + F 查找/替换当前选中的内容,对与所选内容一致的部分进行高亮显示。Ctrl+Shift+down(向下箭头) 整行向下移动。Ctrl+Alt+down(向下箭头) 当前行向下复制。Ctrl+Shift+up(向上箭头) 整行向上移动。Ctrl+Alt+up(向上箭头) 当前行向上复制。Shift+down(向下箭头) 向下选中代码。Shift+up(向上箭头) 向上选中代码。Ctrl + Shift + < 折叠代码块。Ctrl + Shift + > 展开代码块。原创 2024-07-18 14:04:00 · 124 阅读 · 0 评论 -
Qt开机自启动
这段代码可以实现我们需要的功能,但是呢。有一个很重要的问题就是需要管理员权限才可以!对于使用MINGW32编译器的时候,使用管理员权限非常麻烦。但是不要紧,有一个办法既不要管理员权限,也可以实现开机自启。,写入这里是不需要管理员权限的。对之前的代码稍微更改注册表路径修改为。仅仅对当前用户有效。原创 2024-05-08 14:35:57 · 112 阅读 · 0 评论 -
Qt 全局热键之使用QxtGlobalShortcut实现
但是这样已经够我们使用了,只有你在这里的参数放入的是一个合法的快捷键或者快捷键组合的字符串(而非空字符串),那么就能检测出该快捷键是否被占用。QKeySequenceEdit一次可以输入4组快捷键,中间用,分隔开的,这是Qt提供给我们的,在帮助文档中可以看到。下载后解压出来放到我们新建的工程目录中,我们的qt工程是基于QWidget的,这里选择是这个(你可以选择其他的)我们可以捕获键盘输入的快捷键,然后按设置的快捷键就会触发,触发的次数会在label中显示出来。文件放在项目目录下,在项目.pro加入一句,转载 2024-04-09 15:21:21 · 153 阅读 · 1 评论 -
QCustomPlot一、QCustomPlot基础及画图显示
QCustomPlot本身可以设置交互行为,如放大,缩小移动,选择曲线交互,方法是:customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);QCustomPlot默认有成员QCustomPlot::legend实例(调用setVisible(true)显示),一般不需要自己构造QCPLengend,通过这个类你可以控制曲线说明的大小、颜色等属性。表示轴系统上的所有设置,如刻度,范围等。原创 2024-04-02 16:29:48 · 1945 阅读 · 0 评论 -
Modbus协议介绍
ModbusASCII有开始字符(和结束字符(CR LF),可以作为一帧数据开始和结束的标志,而ModbusRTU没有这样的标志,需要用时间间隔来判断一帧报文的开始和结束,协议规定的时间为3.5个字符周期,就是说一帧报文开始前,必须有大于3.5个字符周期的空闲时间,一帧报文结束后,也必须要有3.5个字符周期的空闲时间否则就会出现粘包的情况。CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。原创 2024-03-30 14:01:00 · 893 阅读 · 0 评论 -
Qt操作txt文本文件
二、读取txt文件,按行读。原创 2023-12-13 00:24:30 · 2269 阅读 · 1 评论 -
Qt实现二维码生成和识别
QZxing开源库: 生成和识别条码和二维码下载地址:https://gitcode.com/mirrors/ftylitak/qzxing/tree/master。原创 2023-12-10 03:19:27 · 1890 阅读 · 5 评论 -
荔枝派nano中编译buildroot中加入Qt和tslib
再次编译buildroot,再编译好的buildroot中会出现output文件夹,然后output文件夹下有target文件夹,这个target文件夹就是将要打包的文件系统,目标目录,没有打包的rootfs包。首先交叉编译想使用版本的Qt源码,还有tslib库,编译好之后。然后将编译好的Qt库和tslib库放入target/opt中。原创 2023-09-26 15:57:46 · 436 阅读 · 0 评论 -
Qt给图片添加水印
【代码】Qt给图片添加水印。原创 2023-07-14 09:22:32 · 639 阅读 · 1 评论 -
基于嵌入式Qt的输入法syszuxpinyin自动弹出软件盘的问题
原因是控件无法重新获得焦点,只有当它失去焦点的时候才能重新获得焦点,所以你必须先点其他控件让它失去焦点,然后再点它。问题二:在默认情况下能输入完了以后没有点其他控件而再次输入,简单点就是说点第一次的时候可以弹出,第二次的时候不能。问题一:QLineEditt在默认情况下会自动出现焦点,从而导致一进入界面就弹出软键盘。移植好的syszuxpinyin输入法能正常的检测到控件焦点并自动弹出软键盘。但是我们需要点击一下控件它才弹出软键盘。重新获得焦点.在板子上试验过就知道。解决方法:子类化QLineEdit。原创 2023-07-13 14:10:47 · 263 阅读 · 0 评论 -
触摸屏tslib库交叉编译在arm上运行进行屏幕校准测试
在tslib的官方github(下面的网址)上选择一个版本下载即可。然后这个库用在Qt上面,需要和Qt源码编译时一起使用。下载完成后,在ubuntu14.04进行解压。配置交叉编译器工具和tslib的编译输出路径。为配置交叉编译后库和可执行文件输出的路径。为配置使用的交叉编译工具的名字。原创 2023-07-13 09:59:08 · 1578 阅读 · 0 评论 -
QTableWidget设置代理 添加QCombox
一、实现功能:向QTableWidget上添加QCombox。显示效果:双击鼠标才显示Combox组件。二、向第二列添加combox代码如下。如下图所示:未双击效果图。三、封装Delegate类。转载 2023-07-08 15:31:00 · 914 阅读 · 0 评论 -
Qt递归获取指定文件夹下的所有文件
是可以支持一些简单的正则表达式的。就上面的例子(寻找某一个文件下说有以。或者符合这三个任意组合的文件或文件目录条目。返回目录下所有文件(此时没有子文件文件目录),不包括文件链接和. …这个比较强大,可以指明要遍历的文件名,以及遍历的标准和排序功能。返回目录下的所有文件和子文件目录,不包括文件链接和. …大概是说,适合于大目录遍历,支持递归但是不支持排序。返回所有的条目(包括子文件夹下的条目),至少需要指明。只是文档并没有直说的地方(至少我觉得)。默认值,没有标志,迭代器将返回。)结尾的文件还可以这样写。转载 2023-07-06 13:45:59 · 585 阅读 · 0 评论 -
QtWebApp介绍、下载和搭建http轻量级服务器Demo
QtWepApp是一个C++中的HTTP服务器库,其灵感来自Java Servlet。适用于Linux、Windows、Mac OS和Qt Framework支持的许多其他操作系统。QtWebApp包含以下组件:• HTTP(S)1.0和1.1服务器• 模板引擎• 缓冲记录器这些组件可以相互独立地使用。原创 2023-07-05 20:04:10 · 2313 阅读 · 0 评论 -
Qt中文乱码问题解决
1.用预处理命令 #pragma execution_character_set(“utf-8”)将cpp编码设置为utf-8。2.不用保证源码文件是UTF-8,但是源文件中出现中文用QStringLiteral这个宏来包含起来,那么也不会乱码。3. QString::fromLocal8Bit 根据本地文件的编码转成utf-8然后保存到QString中。编辑 -》 select encoding -》 选择UTF-8 -》按编码保存。std::string转QString乱码。原创 2023-06-08 10:54:47 · 1529 阅读 · 0 评论 -
Qt中对TCP粘包的处理
比如此次接收到的长度为100,那么就向后读取100个字节的数据,就是此次的一个包,哪怕此时缓冲区有1000个字节数据,只读这100个字节就能获取一个完整的包,剩余的900个字节就需要下一次去处理,下次处理的时候还是先读包头,读出数据包的一个长度,然后根据这个长度去读取相应的数据,这样一次一次读取就可以一点一点把数据拆分出来了。是的,这个时候数据已经到达客户端了,只不过被保存在客户端的缓存中了(内核缓冲区),客户端只有在read的时候才能读出数据。数据应该在内存,怎么会在网线里面,又没有内存。原创 2023-03-29 13:54:12 · 975 阅读 · 0 评论 -
Qt使用QPdfium打开和使用PDF操作
QPdfium库下载地址:https://github.com/paulovap/qtpdfium。原创 2023-03-27 00:41:41 · 783 阅读 · 0 评论 -
Qt基础:九、QAbstractSlider:QScrollBar、QSlider、QDial
tracking设置是否跟踪默认为是,就是在拖动滑块时,每移动一个刻度,都会发射 valueChanged()信号,如果选择否,则只有拖动滑块释放时才发射该信号;orientation 设置部件的方向,有水平和垂直两种选择;invertedControls设置反向控制,比如默认是向上方向键是增大,向下方向键是减小,如果选中这个属性,那么控制就会正好反过来。再来看两个Slider,它们有了自己的两个属性 tickPosition 和tickInterval,前者用来设置显示刻度的位置,默认是不显示刻度;原创 2023-03-23 16:49:28 · 334 阅读 · 0 评论 -
Qt基础:八、 QAbstractSpinBox:QDateTimeEdit,QSpinBox和QDoubleSpinBox
QAbstractSpinBox类是一个抽象基类提供了一个数值设定框和一个行编辑器来显示设定值。它有3个子类QDateTimeEdit,QSpinBox和QDoubleSpinBox,分别用来完成日期时间、整数和浮点数的设定。QSpinBox用来设置整数,QDoubleSpinBox 用来设置浮点数,这两个部件在前面的输入对话框中已经接触过了。从部件栏中找到 Spin Box和 Double Spin Box,并将它们拖人到界面上。可以在属性栏中看到 spinBox的属性有:后缀suffix属性原创 2023-03-23 16:01:43 · 261 阅读 · 0 评论 -
Qt基础:七、QPushButton、QCheckBox.QRadioButton 和 QGroupBox、QLineEdit
按钮部件的基类是QAbstractButton类,提供了按钮的通用功能。QAbstractButton类的子类包括复选框QCheckBox,标准按钮QPushButton,单选框按钮QRadioButton和工具按钮QToolButton。原创 2023-03-23 15:21:33 · 724 阅读 · 0 评论 -
Qt基础:六、标准对话框
getText()函数可以提供一个可输入字符串的对话框,各参数的作用分别是:指定父窗口设置窗口标题、设置对话框中的标签显示文本、设置输人字符串的显示模式(例如密码可以显示成小黑点,这里选择了显示用户输人的实际内容)设置输入框中的默认字符串和设置获取按下按钮信息的bool变量;getInt()函数可以提供一个输入整型数值的对话框,其中的参数 100表示默认的数值是100,-1000表示可输人的最小值是-1000,1000表示可输人的最大值是1000,10表示使用箭头按钮,数值每次变化 10;原创 2023-03-23 10:36:25 · 387 阅读 · 0 评论 -
Qt基础:五、自定义对话框
这个accept()函数是QDialog类中的一个槽,对于一个使用exec()函数实现的模态对话框,执行了这个槽就会隐藏这个模态对话框,并返回QDialog::Accepted 值,这里就是要使用这个值来判断是哪个按钮被按下了。与其对应的还有一个 reject()槽,它可以返回一个QDialog::Rejected值,前面的“退出程序按钮也可以关联这个槽。然后在设计模式中向窗口添加两个Push Button,并且分别更改其显示文本为“进入主界面”和“退出程序”可以在构造函数中设置两个按键的属性。原创 2023-03-22 16:17:29 · 802 阅读 · 0 评论 -
Qt基础:四、多窗口切换
这是一个测试多窗口切换的程序,点击主界面上得按键,然后弹出一个新的对话框窗口。运行程序,然后单击主界面上的按钮就会弹出一个对话框。1、在主界面添加一个按键。2、实现按键的槽函数。原创 2023-03-22 14:35:43 · 488 阅读 · 0 评论 -
Qt基础:三、模态和非模态对话框
与setModal()函数相似的还有一个setWindowModality()函数,它有一个参数来设置模态对话框要阻塞的窗口类型,可以是Qt::NonModal(不阻塞任何窗口,就是非模态)Qt::WindowModal(阻塞它的父窗口所有祖先窗口以及它们的子窗口)或Qt::ApplicationModal阻塞整个应用程序的所有窗口)。按照运行对话框时是否还可以和该程序的其他窗口进行交互,对话框常被分为两类:模态的(modal 阻塞)和非模态的(modeless 非阻塞)。原创 2023-03-22 14:30:24 · 270 阅读 · 0 评论 -
Qt基础:二、Qt4和Qt5兼容部分
这句话的意思是QT版本超过4,就需要加上widgets。原创 2023-03-22 10:20:21 · 204 阅读 · 0 评论 -
Qt基础:一、设置应用程序图标
Qt基础设置应用程序图标1、创建ico文件,qt的图标用的是ico文件。可以看到此时编译好的exe文件带有了图标。2、在pro文件中添加下面一句。运行的时候也存在了图标。原创 2023-03-22 10:16:32 · 1187 阅读 · 0 评论 -
QScrollArea自动滚动区使用方法
这个时候在右边对象栏中可以看到添加了QScrollArea的对象scrollArea,并且有子对象scorllAreaWidgetContents,这里的scorllAreaWidgetContents就是幕布,当scorllAreaWidgetContents的大小超过了父对象scrollArea时,scrollArea就会自动出现滚动区。这里介绍一种简单的方法,在QtCreator中可以直接在ui中拖出来。这里设置了父对象scrollArea的大小为980*630。此时自动出现了滚动区。原创 2023-03-15 11:44:00 · 1247 阅读 · 1 评论 -
Qt中的一些常用的算法和函数
Qt中的< QtAlgorithms >和< QtGlobal >提供了一些常用的算法和函数。原创 2023-03-08 09:35:15 · 524 阅读 · 0 评论 -
Qt中带符号十进制与两字节十六进制之间的转换
前言:两者转换一般用在串口通信的数据处理上,上位机接收到QByteArray类型的数据,转成QString类型,然后进行字符串截取拼接,获取数据。因此,下文两字节十六进制的数据类型是QString。十进制各种数据类型转换相对简单。下文带符号十进制数据类型是整型。带符号十进制与两字节十六进制之间的转换。1、带符号十进制 转 两字节十六进制。2、两字节十六进制 转 带符号十进制。例子:0xFD67 和 -665。转载 2023-03-08 00:55:30 · 981 阅读 · 0 评论 -
Qt选择屏幕进行全屏显示
【代码】Qt选择屏幕进行全屏显示。原创 2023-03-06 18:13:35 · 608 阅读 · 0 评论 -
Qt界面最小后恢复界面不能刷新,出现假死的情况
将界面设置成无边框后,再自定义按键使用Qt::WindowMinimized使界面最小化,然后再把界面恢复成正常,发现界面不能刷新;鼠标悬停在控件上,控件的背景颜色不会发生变化;Qt::WA_Mapped的解释是。就是告诉系统界面已经显示出来了;重写showEvent()函数。转载 2023-03-06 17:41:21 · 1151 阅读 · 0 评论 -
Qt实用技巧:Qt并发服务器通讯
2.下载源码可以将客户端的时间间隔改下,同时运行线程数增大,IDE的qDebug可以看到停止后,index没有归零,仔细翻阅调试信息,可以找到“错误”,此条,以便读者自己可以使用源码尝试该问题。服务端:主线程为TcpServer,当有一个新连接的时候,会new一个线程处理该新连接socket,接收数据后发送处理该socket的线程地址。客户端:固定client的线程数量,单个线程按照设置的间隔不断发送数据给服务器,并接收服务器的线程指针地址。newConnection线程处理代码Thread.h。转载 2023-03-02 15:51:02 · 517 阅读 · 0 评论 -
Qt使用信号和槽传递自定义的参数
然而,与创建堆对象的new操作以及删除堆对象的delete操作相比较,信号和槽的代价只是它们很少的一部分。信号和槽机制导致的这点性能损耗,对实时应用程序是可以忽略的。方法,将自定义 T 类型的数据保存到QVariant对象中,可以理解为是自定义类型被封装成了QVariant的形式,这样,我们自定义的T类型的对象就能够通过所有参数和返回值为QVarian类型传递。Qt的信号和槽可以传递int、double等c++常用类型变量,也可以传递QVector、QMap等Qt的容器类(当然也可以传递Qt定义的类型)。转载 2023-03-01 10:00:03 · 2234 阅读 · 0 评论 -
QVector用法详细介绍
QVector类是动态数组的模板类,顺序容器,它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们。注意erase方法和std::vector有区别。将元素插入到vector的任意位置。移除vector中的所有元素。使用前需要包含头文件。转载 2023-02-28 11:17:38 · 1390 阅读 · 0 评论 -
Qt中使用线程池
线程池做的工作主要是控制运行线程的数量,处理过程中将任务放入队列,然后线程创建后启动这些任务,如果线程数量超过了最大线程数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。线程是稀缺资源,如果无限的创建,不仅会消耗系统的资源,还会降低系统的稳定性,使用线程池可以统一的分配,调优和监控。线程的创建和销毁的开销是巨大的,每次使用时再创建线程会严重影响性能,所以要提前创建线程,并且这个线程可以复用。第一:降低资源消耗,通过重复利用已创建的线程,降低线程创建和销毁造成的资源消耗。原创 2023-02-28 11:06:48 · 674 阅读 · 0 评论 -
Qt线程的同步和互斥
当某线程对QMutex对象上锁后,其他线程在对QMutex对象上锁时,线程会阻塞,直到QMutex对象被解锁。类QSemaphore提供类一个常用的信号量计数类。可以对QSemaphore对象的信号量进行加减,当信号量不足(被减后小于0)时线程会阻塞通过信号量的操作,线程执行的顺序会被指定,从而实现同步。例子:在三个线程中,分别计算[1, 300] ,[301, 600], [601, 1000]的和,最后再将三个和相加得出[1,1000]的和。原创 2023-02-20 15:28:28 · 91 阅读 · 0 评论 -
ubuntu20下Qt5.14.2+OpenCV(含Contrib)-4.5.0环境搭建
Qt若要能处理图片和视频,就必须安装OpenCV,而OpenCV中很多的高级功能如人脸识别等都包含在Contrib扩展模块中,需要将Contrib与OpenCV一起联合编译,目前所用这两个版本都是4.5.0版。原创 2023-02-11 11:12:46 · 1963 阅读 · 1 评论 -
使用公网IP的ubuntu移植QT运行用QT编写的服务器
下面是ubuntu下移植Qt:将编好的可执行程序放在另一台主机,然后将Qt的库转移到这台主机上来,设置环境变量后,重启,可以运行qt可执行程序。原创 2023-02-10 11:08:16 · 125 阅读 · 0 评论 -
Qt使用QMediaplayer实现视频播放和简易音乐播放
QMediaObject可以提供关于媒体内容的接入,通过URL进行初始化,同时也可以提供可以播放的媒体文件的列表,与QMediaplayer对象息息相关。使用QMediaplayer,除了需要添加必要的头文件之外,还需要在.pro(Qt的工程配置文件)添加QT += multimedia。可以通过改变position的位置,从而实现快进和后退的功能。当然了,在获取到媒体内容,需要进行播放或者进行播放时,获取状态信息的改变是必不可少的。下面是实现简易播放的实现。第二个是通过获取的路径,播放文件的功能。转载 2023-01-17 09:47:35 · 1107 阅读 · 0 评论 -
Qt中解除按键在聚焦时键盘空格键可以控制
实际就是QPushButton与键盘空格键事件绑定了,QPushButton接受了键盘事件,导致按下空格键相当于点击了QPushButton。用户使用键盘上的Tab键或者鼠标左键点击QPushButton按键,把焦点聚集到按钮时,再按下空格就相当于点击了按钮。这一点在ui文件中的QPushButton的默认属性是强聚焦可以看出来。Qt中解除按键在聚焦时键盘空格键可以控制,只允许鼠标左键可以点击按键。首先需要知道原因,为什么键盘上的空格键也可以点击按键?这样该按钮就无法接收键盘事件了。原创 2023-01-14 11:01:31 · 1266 阅读 · 1 评论