
QT实用技巧(应用)
文章平均质量分 51
这个专栏主要有的内容是使用qt时能用到的一些比较实用的方法或者是一些快捷小tips
咸鱼2333号程序员
企业员工小白一枚,分享实战过程中遇到的知识点及实用技巧
本人写的内容都比较简单易懂,注重于怎么去使用.
展开
-
QT 控件等如何实现复制与粘贴的功能?(QClipboard)
【代码】QT如何复制与粘贴?(QClipboard)原创 2022-07-18 17:00:53 · 3879 阅读 · 0 评论 -
QT 中用代码执行命令行清空Linux系统垃圾箱Trash
切换到root用户下即可查看。原创 2022-08-16 18:05:48 · 1435 阅读 · 0 评论 -
QTableWidget如何在标题行的其他列添加下拉菜单等控件
QTableWidget常见操作有在标题栏的第0列添加控件,还有表格内添加控件等,但在标题栏的其他列添加控件的操作很少,今天这篇文章记录下如何在标题栏的其他列添加下拉菜单等按钮原创 2023-10-24 18:01:11 · 912 阅读 · 1 评论 -
QMessageBox如何代码添加按钮并绑定按钮的信号
QMessageBox如何代码添加按钮并绑定按钮的信号,做自己点击按钮后想做的事,而不是只能确认和取消原创 2023-03-24 14:59:39 · 3165 阅读 · 1 评论 -
QTableWidget详细使用示例(里面有QMenu实现多级菜单的方法)
【详解】QTableWidget使用示例。原创 2022-07-29 17:58:17 · 4142 阅读 · 0 评论 -
QT 怎么删除布局里的所有控件?
【代码】QT怎么删除布局里的所有控件?原创 2022-07-26 10:43:55 · 5685 阅读 · 1 评论 -
QT ui设计师界面常用操作记录(QTabWidget)
qt ui设计师界面常用操作(有点难找qaq)原创 2022-07-15 10:48:43 · 2540 阅读 · 4 评论 -
QCombox(重写)+QCompleter(自动补全,自动加载qcombox的下拉选项,设置背景颜色)
示例: QCombox(重写)+QCompleter(自动补全,自动加载qcombox的下拉选项,设置背景颜色) Qt——QLineEdit使用总结QT combox的使用示例(输入后捕捉enter键,以及输入编辑框如何加输入限制(正则表达式))QComboBox自定义样式(重载下拉框)综合用法.........原创 2022-07-05 16:53:45 · 2876 阅读 · 0 评论 -
qt 怎么检测鼠标在不在某个控件上
方式一:推荐,感觉这种事件过滤器的方法捕捉比较敏感记得安装事件过滤器上面的函数还可以有一层,选择对应的你要哪个控件安装这个事件过滤器比如:方式二:重写鼠标事件如果控件有父亲,记得也要设置鼠标追踪 上面两种方法可以动态的监听鼠标是不是在某个控件上方式三:静态方式四:静态:............原创 2022-07-04 10:20:50 · 6539 阅读 · 0 评论 -
LightGroupButton* sender = static_cast<LightGroupButton*>(QObject::sender());
当某一个Object emit一个signal的时候,它就是一个sender,系统会记录下当前是谁emit出这个signal的,因此我们可以从对应的槽函数里面获得哪个发送的信号 有可能多个Object的signal会连接到同一个signal(例如多个Button可能会connect到一个slot函数onClick()),因此这是就需要判断到底是哪个Object emit了这个signal,根据sender的不同来进行不同的处理QObject::Sender()返回发送信号的对象的指针,返回类型为QObj原创 2022-07-01 14:20:34 · 521 阅读 · 0 评论 -
QJsonObject的使用示例
介绍:负责封装JSON对象,是键/值对列表,其中键是惟一的字符串,值由QJsonValue表示。1——QJsonObjec:封装了Json里的对象接口与QMap相似,都具有size()、insert()和remove()等操作,还可以使用标准C++迭代器模式对其内容进行迭代。使用示例:如下图所示:我们要写入这个数据的话,怎么写进去? 记住一点就可以,[]前面的就是 Json数组格式,{}就是个Json对象格式2——QJsonArray: 封装了Json里的数组3——QJsonDocument:转换器原创 2022-06-27 11:23:57 · 11259 阅读 · 1 评论 -
QT 一个控件的坐标怎么相对固定显示在另一个控件上(坐标系)
先给子控件设置它依赖于哪一个控件上显示设置坐标的时候,就会相对那个控件的坐标显示示例:这样的话,不管怎么移动窗口,tableview显示的坐标都跟着groupBox的坐标而移动。补充一下QT里坐标系的知识:与鼠标位置有关的3个方法示例: Qt是如何获取控件的相对位置示例: Qt是如何获取控件的绝对位置示例:控件的大小:.........原创 2022-06-27 09:55:09 · 3476 阅读 · 0 评论 -
QT QtableView的使用示例(设置item背景颜色的方法)
1——创建表格内容默认行头和列头是存在的,如果要隐藏的话可以执行下面的代码:tableview视图如下:2——tableview的单击元素的触发信号 3——tableview清除表格全部数据的方法 4——设置所有的列宽和行高5——隐藏滚动条...............原创 2022-06-21 15:34:17 · 12352 阅读 · 0 评论 -
QT 控件增加双击事件
一、重载函数mouseDoubleClickEvent二、事件过滤器原创 2022-06-20 20:06:51 · 4284 阅读 · 1 评论 -
QT combox的使用示例(输入后捕捉enter键,以及输入编辑框如何加输入限制(正则表达式))
QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个 QLineEdit 用作输入。QComboBox 除了显示可见下拉列表外,每个项(item,或称列表项)还可以关联一个 QVariant 类型的变量,用于存储一些不可见数据。如图所示的就是一个combox:使用方法:1——添加下拉列表选项效果如下:1-1——添加带图标的下拉选项效果如下:方式二:void setItemIcon(int index, const QIcon &icon) 补充:原创 2022-06-20 18:49:31 · 10501 阅读 · 0 评论 -
QT 自定义组合控件(类提升功能)
一、创建第一步:新建一个QT设计师界面类,会自动生成.cpp/.h/.ui文件如下图所示: 第二步:在ui界面里,把你想要组合的控件拖进去,如下图所示,我这里拖了一个combox和一个spinbox第三步:右键会出现一个提升的窗口部件,点击 第四部:添加之后上面会出现这个 表示添加成功了,点击关闭就好了 二、使用示例(当成普通控件使用即可)展示: 代码调用: .h.cpp 如果想要自定义控件有什么效果的这些,可以在该类里面增加即可...............原创 2022-06-20 17:21:19 · 3822 阅读 · 0 评论 -
QT 如何打印QThread线程id号
如上图所示,通常第一个打印出来的是线程句柄代表内核对象而第二个打印出来的是一个指向该线程的指针通常我们程序出错的时候报的都是这个指针,所以排查出错的地方的时候,后面这个才有用。.........原创 2022-06-16 16:06:24 · 8384 阅读 · 1 评论 -
QT 怎么导入qss文件?
方式一:比较常见的方法QFile file(":/qss/psblack.css");if (file.open(QFile::ReadOnly)) { QString qss = QLatin1String(file.readAll()); qApp->setStyleSheet(qss); file.close();}方式二:大佬分享的;Qt设置样式表支持直接传入样式表文件路径,亲测4.7到5.15任意版本,通过查看对应函数的源码可以看到内部会检查是否是原创 2022-05-10 10:30:56 · 1900 阅读 · 0 评论 -
QT 解决中文乱码问题
方式一:代码文件选择用utf8编码带bom。工具——选项——文本编辑器方式二:在有中文汉字的代码文件顶部加一行(一般是cpp文件) #pragma execution_character_set("utf-8");这行代码是为了告诉msvc编译器当前代码文件用utf8去编译。方式三:main函数中加入设置编码的代码,以便兼容Qt4,如果没有Qt4的场景可以不用,从Qt5开始默认就是utf8编码。#if (QT_VERSION <= QT_VERSION_CHECK(5..原创 2022-05-10 10:23:31 · 10162 阅读 · 0 评论 -
QHash的使用(插入、取值、遍历、删除)
1——创建,键值对的方式插入,数据类型随意,这里以键int,值QString示例。QHash<int,QString> qhash;2——插入 //方式一 qhash[1] = "1"; qhash[2] = "2"; qhash[3] = "3"; //方式二 qhash.insert(4, “4”);通常,QHash 每个键只允许有一个值。如果用已经存在的键调用insert(),先前的值将被删除...原创 2022-05-07 17:32:09 · 21781 阅读 · 2 评论 -
TCP/UDP调试工具的使用
TCP/UDP调试工具下载链接前文:当我们写好一个TCP/UDP的程序时,但是无法通信时,光看代码又找不出原因时,我们可以借助调试工具来检查是服务端还是客户端出现了问题,这样就很大的减少了错误的排查范围.具体使用步骤如下,以QT TCP通信为例:首先我们打开工具界面的样子如图所示:第一步:首先排查是不是客户端出的问题---------我们要在QT运行服务端的程序,然后在调试工具上开启客户端,输入服务端的IP和端口号.注:这里的虚拟机的IP可以通过命令ifconfig来查看点击确定之后弹出来的原创 2022-01-27 09:52:35 · 23995 阅读 · 0 评论 -
QT-TCP服务端开启多个线程处理收到多客户端发来的消息示例
一些用到的函数等解释:void incomingConnection ( int socketDescriptor ) 当有新连接可用时,QTcpServer将调用此虚拟函数。注意:如果希望将传入连接作为另一个线程中的新QTcpSocket对象处理,则必须将socketDescriptor传递给另一个线程,在那里创建QTcpSocket对象并使用其setSocketDescriptor()方法。 ...原创 2022-02-17 18:18:07 · 9662 阅读 · 11 评论 -
QT之QTimer详解以及结合多线程中开启定时器的示例
一 QTimer详解QTimer类提供了重复和单次触发信号的定时器。a.void timeout ()定时器超时后,这个信号被发射。b.void start()开启定时器,它的重载函数void start(int msec),启动或重新启动一个超时时间间隔为毫秒的定时器。如果定时器正在运行,它将被停止和重新启动。c.void stop()停止定时器.d.void setInterval(int msec)设置超时间隔(毫秒为单位)。示例: QTimer *timer = new QT原创 2022-01-27 16:32:32 · 23987 阅读 · 8 评论 -
QT TCP简单的通信示例
TCP服务端:第一步:创建监听套接字的QTcpSever QTcpServer *m_tsTcpServer;第二部步:listen------监听是否有新的连接进来int iMyport;如果有新的客户端连接的话,会触发信号newConnection(),定义一个槽函数接收连接好的套接字. //监听的端口号 iMyport = iPort; //判断是否接收到了新的连接 if(m_tsTcpServer->listen(QHostAddress::Any,iMyport原创 2022-01-26 10:54:00 · 2914 阅读 · 0 评论 -
QT TCP服务端处理多个客户端发来的消息
由于有多个客户端,所以需要用一个QList来把所有的客户端给存起来. int m_iClientCount; QList<QTcpSocket*> listClient;然后触发读的槽函数时,直接遍历读取即可 QByteArray baArray; //利用for循环循环列表中的每一个连接进来的客户端,判断是哪一个客户端发的数据 for(int i=0;i<listClient.size();i++) { m_tsTcpSocket = l原创 2022-01-26 17:56:44 · 5092 阅读 · 7 评论 -
QT UDP简单的通信示例
一 UDP(user datagram protocol)即用户数据协议,是一个轻量级的/不可靠的/面向数据报的无连接协议.在qt中提供了QUdpSocket类来进行UDP数据报的发送和接收. 在Pro中加入network模块;服务端:第一步:创建出一个udpsocketQUdpSocket *m_usSocket = new QUdpSocket(this);第二步:绑定监听的端口号号;第一个参数是服务端绑定的地址,第二个参数是接收消息的端口号m_usSocket-原创 2022-01-28 15:43:24 · 11831 阅读 · 1 评论 -
QT QLabel中字体行间距怎么设置?
方式一:<br>可以达到换行的效果,但是行间距太小了,两个<br>又太大了,这种方法并不可控。 m_titleLabel->setText("<font style ='font-size:19px; color:#ffff00;font-weight:bold'> 客户端界面 </font>" "<br>" "<font原创 2022-02-25 18:08:12 · 12801 阅读 · 0 评论 -
QFont如何设置字体大小
1、设置字体的大小: QFont ft; ft.setPointSize(25);//字体大小 m_titleLabel->setFont(ft);//其他控件里的字体大小设置也一样2、设置字体颜色:a. 样式: m_titleLabel = new QLabel(tr("客户端"),this); m_titleLabel->setStyleSheet("color:yellow;");b. 调色板: QLabel *lab原创 2022-02-28 10:00:44 · 15323 阅读 · 3 评论 -
QTextEdit详解(设置显示内容的两种方式(setPlainText/insertPlainText、滚动条自动(往下、往上)滚动……)
1、void setPlainText ( const QString & text ) m_tcpRecText->setPlainText(sTemp);2、void QTextEdit::insertPlainText ( const QString & text ) m_tcpRecText->insertPlainText(sTemp);两者设置的区别:第一种方法每次显示之前都会清空之前显示的内容第二种方法则会一直不会情况,内容会原创 2022-02-21 15:53:41 · 20626 阅读 · 6 评论 -
QList(增删改查)示例
特点:支持随机访问,其界面也是基于索引的,在中间的任意一端插入或移除项都是非常快速的注:访问QList中的值时,尽量采用value(int i),因为value查不到此值时会返回一个默认值0,而at(int i)则会引起崩溃,并且at返回的值不可修改,不便于后期对数据的处理 //定义QList变量 QList<QString> list; /***********在列表中添加元素***********/ // 方式1 << list <&l原创 2022-01-25 16:35:00 · 14170 阅读 · 2 评论 -
QMap的使用(插入、取值、删除、遍历)
1——创建,里面的数据类型随意都行 QMap<QString,QByteArray> m_qMap;2——插入赋值,QMap只允许每个键有一个值。如果使用QMap中已存在的键调用Insert(),则先前的值将被擦除。 //方式一 m_qMap["one"] = "1"; m_qMap["three"] = "2"; m_qMap["seven"] = "3"; //方式二 m_qMap.insert("twelve原创 2022-02-22 10:54:05 · 61966 阅读 · 3 评论 -
QFileDialog打开文件夹,获得文件名(getOpenFileName,getExistingDirectory)
1-------QFileDialog::getOpenFileName示例:括号里的参数分别是:指定父类、标题、默认打开后显示的目录、右下角的文件过滤器。 QString file_name = QFileDialog::getOpenFileName(NULL,"标题","./",,"*.xml"); qDebug() << file_name;./默认打开当前项目所在的目录;最后一个参数有的话,表示筛选打开包含此文件的目录;多种后缀名的筛选时.若最后原创 2022-01-28 18:05:45 · 19521 阅读 · 3 评论 -
QFile详解(文件如果不存在则创建、判断文件是否存在、获得文件的各种详细信息、读写文件)
目录一、QFile文件如果不存在则创建的方法二、QFile判断文件是否存在的方法三、QFileInfo的方法获得文件的各种详细信息四、QFile读写文件的内容一、QFile文件如果不存在则创建的方法 QFile f("./1234.ini"); if(!f.open(QIODevice::Append)) { return 0; }open里的打开模式为QIODevice::WriteOnly、QIODevice::Rea.原创 2022-04-29 14:11:36 · 29487 阅读 · 0 评论 -
Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例
运用: MultMoveToThread *testObject = new MultMoveToThread(4); testObject->createItem(); testObject->startMultThread();.h#ifndef MULTMOVETOTHREAD_H#define MULTMOVETOTHREAD_H#include <QThread>#include <QList>#include "myobjec原创 2022-01-27 11:34:36 · 3997 阅读 · 1 评论 -
QT生成XML(QXmlStreamWriter或DOM)
话不多说,直接而看代码,效果可以自己运行看看.记得在Pro文件里加上xml模块.方式一QXmlStreamWriter QString sXml;//存储生成的XML QXmlStreamWriter xswWriter(&sXml); xswWriter.setAutoFormatting(true); xswWriter.writeStartDocument("1.0",true); //根节点开始 xswWriter.writeStar.原创 2022-01-28 15:59:53 · 2773 阅读 · 0 评论 -
QT 如何修改工程(项目)名?
前因:我们有时候一开始起的项目名到后面并不合乎心意时,而且项目里面的大多数类都是重复的,此时我们只想修改一下工程名即可.步骤如下:在这里假设我原来的工程名字是test,想要修改成名字为demo.第一步:打开工程文件夹,除了test.pro以及自己手动添加出来的类包含的.cpp/.h/.ui文件之外(可能会疑惑的一点,main.cpp要不要删除,在这里我放心的告诉你main.cpp可以不用删除),其他文件夹里的文件全部删除,不用怀疑!!!第二步:将原来的test.pro文件名改成demo.pr原创 2022-01-28 15:05:59 · 13962 阅读 · 0 评论 -
QT 怎么获取linux本机的IP地址?
QHostAddress haAdrdress = QHostAddress::LocalHost;QString sIp = haAdrdress.toString();原创 2022-03-16 14:24:26 · 2508 阅读 · 0 评论 -
QT 计算两个日期时间差?(时间转时间戳)
1、得出的结果单位是:天(不足一天为0,没有半天的说法) QDateTime time1 = QDateTime::fromString("2022-4-25 16:40:02", "yyyy-MM-dd HH:mm:ss"); QDateTime time2 = QDateTime::fromString("2022-4-27 16:43:02", "yyyy-MM-dd HH:mm:ss"); int days = time1.daysTo(time2); qD原创 2022-04-08 15:34:28 · 8153 阅读 · 0 评论 -
如何把QList中结构体数据批量存入到QSettings配置文件中,遍历读取?
qt中的ini配置文件是由节点、键、值组成的,不设置节点的话就默认没有首先我们创建出一个配置文件出来: //方式一 QSettings setting("test.ini",QSettings::IniFormat); setting.setValue("animal/snake", 58);//说明:“节点/键”,值 setting.setValue("animal/rft", 68); setting.setValue("ty/snake", 58);原创 2022-03-17 15:01:49 · 3947 阅读 · 1 评论 -
QT 怎么删除文本文件中的某一行数据?(QFile)
示例:deleteOnelineInFile(1,"./test");//参数,第几行(从0开始数),文件名完整代码示例:void ResManageObject::deleteOnelineInFile(int iNumLine, const QString sFilename){ QString sTemp; QFile f(sFilename); if(f.open(QIODevice::ReadWrite)) { QTextStre.原创 2022-04-27 15:46:05 · 7762 阅读 · 2 评论