
QT
文章平均质量分 57
蝈蝈(GuoGuo)
这个作者很懒,什么都没留下…
展开
-
QT中图表类QChart之各种缩放/平移
例如,当前显示X的显示范围为[20, 50],如果我们把X轴的显示范围扩大到[0, 80],这样做的效果就是显示的图形变小了,也就实现了缩放。例如,当前显示X的显示范围为[0, 30],如果我们把X轴的显示范围扩大到[10, 40],这样做的效果就是显示的图形左移了,也就实现了平移。QChart::zoomReset() //把所有做过的zoomIn、zoomOut、zoom全部撤销。QChart::zoom(0.9) //整体缩放,参数为放缩系数,1代表放大。//缩放到指定的矩形。原创 2022-12-15 14:31:18 · 2656 阅读 · 0 评论 -
Qt创建托盘————附详细代码
【代码】Qt创建托盘————附详细代码。原创 2022-12-11 14:14:25 · 477 阅读 · 0 评论 -
Qt多线程简述————moveToThread/QThread
因为项目需要处理TCP传来的特别快的数据,每秒600次,核算差不多1.6ms一次,如果单用一个主线程来处理特别容易卡死(因为虽然主线程接受数据很快,但是处理数据就会特别慢(相较与接受数据),就会导致来不及接受接下来的数据),因此需要用到多线程来处理。以前都是单核计算机时,多线程其实都是并发的,也就是(微观上)多个线程轮换使用cpu,宏观上看起来是“同时”执行的,因此总体上效率并没有明显的提升。但是多核计算机时,可以并行(微观上同时)执行多个线程,执行效率会有明显提升。原创 2022-12-11 14:06:34 · 918 阅读 · 0 评论 -
QTableWidget 的使用
QTabWidget 是qt中 常用的一个表格组件,在展示列表以及部分详细信息的时候可以用它,他的样式及用途都比较广泛,它独特之处在他内部已经将表头和表格内容分开,我们在使用的过程中也可以直接是用默认的表头(当然表头也是可以隐藏的,可以根据我们自己的需求来设计它)。他的表头包括行标头和列表头。在表头添加文字 以及做一些美化。原创 2022-12-10 14:36:27 · 1964 阅读 · 0 评论 -
Qt 使用 kdChart 自定义甘特图
但是和项目设计有点出入,所以自定义部分显示:1.左边的是QTreeView,并为其添加委托,控件变化主要是通过QStandardItem->setData()来区别,这没什么说的,主要记录修改颜色和获取甘特图item拖动事件(1).修改颜色(可实现每个item的颜色都不一样): 这是设置每个item的颜色:topitem->setData(249, KDGantt::ItemColor_R);topitem->setData(171, KDGantt::ItemColor_G);topit原创 2022-12-06 09:08:39 · 1666 阅读 · 0 评论 -
memset函数详解
memset以字节为单位进行初始化,这句话是什么意思呢?就是说它进行初始化时并不关心你要初始化的数组是什么类型的,它均以字节为单位进行初始化。比如你的数组是int型的。但是memset以字节进行初始化。memset函数为初始化函数,可以将一段连续的内存初始化为某个值。int 型的最大值为 0x7FFFFFFF。比如int型的0为 0x00000000。1字节为8bit ,所以两位为1字节。但它是以字节为单位进行初始化的。memset函数的一般使用格式为。所以一下两种初始化效果是一样的。原创 2022-11-30 10:24:32 · 2756 阅读 · 0 评论 -
TableView如何让行或列只读
新建一个类ReadOnlyDelegate,头文件为ReadOnlyDelegate .h。原创 2022-11-29 09:29:03 · 363 阅读 · 0 评论 -
多进程界面开发-Qt试玩儿
做客户端开发已经有好几个年头了,今天看到同事发了一篇关于富途牛牛的文章,核心思想就是想说,新版本的富途支持多进程架构了,效率大大提升啦,可以更好的里有多核CPU,提供软件运行效率。听到这个消息,我不仅感叹,我靠,真的好牛逼。但是心里又在默默的想,这个东西到底有什么好处,多进程写界面!!!从来没这么搞过呀,会不会有坑,到底比多线程好在了哪里?带着这个问题,从百度上看了几篇相关文章,主要是讲解了线程和进程的一些区别。当然了,最重要的还是目前的多进程架构的客户端已经开始变得多了起来。原创 2022-11-28 18:40:45 · 952 阅读 · 1 评论 -
Qt基础开发之QString与QByteArray详细用法与区别及QString QByteArray互转
输出结果:str: "小马哥" byte: "\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5",str保留编码格式,能输出中文,但是QByteArray只把"小马哥"当做普通的字节数据来处理,utf-8编码下,一个汉字占三个字节。" byte2: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5"输出结果:byte: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5" str: "123abc小马哥"原创 2022-11-28 09:51:00 · 3977 阅读 · 0 评论 -
Qt读取JsonObject中Key及对应列表方法
【代码】Qt读取JsonObject中Key及对应列表方法。原创 2022-11-28 08:27:27 · 2007 阅读 · 0 评论 -
Easylogging++的使用及扩展
Easylogging++ 是用于 C++ 应用程序的单头高效日志库。它非常强大,高度可扩展并且可以根据用户的要求进行配置。。Easylogging++ 在v9.89版只有一个头文件,之后改为一个头文件、一个源文件,目前最新版本是v9.97(本文使用的版本)。原创 2022-11-23 15:19:20 · 1252 阅读 · 0 评论 -
QT中互斥锁QMutex的简单使用
线程2线先取到锁并加锁AppData::sharedNumMutex.lock(),所以线程1在执行到加锁操作时QMutexLocker mutexLocker(&AppData::sharedNumMutex),在这个位置会被阻塞住,只有等到线程2解锁,线程1才能加上锁并往下继续执行程序。bool tryLock(int timeout = 0)// 解锁。保证在同一时刻只有一个线程在使用共享资源。保护共享资源(对象、数据结构、代码段)方便对锁的操作,避免忘记unlock。建议使用这种方式操作互斥锁。原创 2022-11-23 10:08:43 · 1270 阅读 · 0 评论 -
Qt QUndoStack、QUndoCommand(实现撤回和回撤)
/右面显示栈内容的view(不setText就是空的)//入栈操作 会自动调用 addCommand 的 redo。//初始化item 生成的位置。//undoView 中就会显示(父类的方法)15 void addCommand::redo()//stack push 时 会自动调用。重写 QUndoCommand 就是重写父类的 undo() 和 redo() 方法。23 //移动item。原创 2022-11-23 09:14:22 · 987 阅读 · 1 评论 -
QT中的explicit关键字的作用
带一个int型的参数,代码19行会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此代码20行会出现编译错误。普通构造函数能够被隐式调用。而explicit构造函数只能被显示调用。这样看起来好象很酷,很方便。但在某些情况下,却违背了我们(程序员)的本意。这时候就要在这个构造器前面加上。修饰, 指定这个构造器只能被明确的调用、使用,不能作为。操作符被隐含的使用。原创 2022-11-23 09:10:10 · 320 阅读 · 0 评论 -
【Qt】一文总结Qt高级数据结构【栈和队列】
所以可以使用isEmpty()来检测队列是否为空,并且可以使用QList的iterator类(例如QListIterator)来遍历QQueue。但除此之外,QQueue还提供了三个方便的函数:enqueue()、dequeue()和head()。例如,可以使用isEmpty()来检测堆栈是否为空,并且可以使用QVector的迭代器类(例如QVectorIterator)遍历QStack。除此之外,QStack还提供了三个方便的函数:push()、pop()和top(),这使得LIFO的实现更加容易。原创 2022-11-23 08:54:58 · 824 阅读 · 0 评论 -
Qt 报表实现---QPainter+QPrinter
QPainter是可以在QPrinter上绘制图形和文字的,利用这个方法,可以绘制任何图形或者文字、表格等,可以实现复杂的表格绘制,如果报表比较特殊,可以尝试使用这个方法,下面简单介绍一下实现的过程。我这边里封装了一个报表打印类,用于打印报表,当前并没有传入数据和参数,实际实际项目是需要传入参数和数据的。因为可能会打印多个页,所以这里把一页的绘制单独封装为一个函数。打印信号处理槽函数,用于接收打印信号,在这个函数里调用printOnePage去绘制要打印的报表。横向打印和纵向打印;原创 2022-11-19 21:00:08 · 1831 阅读 · 0 评论 -
QT-QTSingleApplication-程序只运行一个实例
QTSingleApplication由Qt官方提供的,用于实现只启动一个实例,并在启动时可以向向另一个实例通信(依赖于QtNetwork模块)表示当我们调用sendMessage()时,将会调用messageReceived()信号函数,最终调用activateWindow()函数.将QTSingleApplication解压,将解压后目录拷贝到当前项目路径下,在项目pro文件中增加下面这行。链接:https://pan.baidu.com/s/1bBLgkpOW3lq6ZQj9ultxyA。原创 2022-11-19 13:11:56 · 241 阅读 · 0 评论 -
QT-多线程与界面之间交互总结
表示如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。使用QApplication::postEvent()实现向界面发送事件,从而能够封装一个自定义类。然后在子线程定义信号函数,通过信号槽机制,向界面组件emit发射信号,从而实现间接操作.在QThread线程中不能直接创建QWidget之类的界面组件.该函数的连接方式默认使用的是Qt::AutoConnection。原创 2022-11-19 13:10:41 · 1410 阅读 · 0 评论 -
可自由展开的ToolBox
Qt基本控件的使用搞清楚了,结合一些小技巧,实现复杂的自定义控件是一件很轻松的事情,熟能生巧,万事皆如此。原创 2022-11-17 11:12:22 · 1444 阅读 · 0 评论 -
QStandardItmeModel
表格视图控件QTableView,需要和QStandardItemModel, 配套使用,这套框架是基于MVC设计模式设计的,M(Model)是QStandardItemModel数据模型,V(view)是指QTableView视图,要来显示数据模型,C(controllor)控制在Qt中被弱化,与View合并到一起。QTableView在处理信息显示编辑的时候比较单调,类似行编辑器,为了获得更多的灵性性,交互通过QItemDelegate执行。,但是在这之前你需要调用。原创 2022-11-17 08:21:46 · 656 阅读 · 0 评论 -
QT收藏夹
董哥的黑板报原创 2022-11-15 11:57:49 · 180 阅读 · 0 评论 -
QT获取计算机硬件信息
本文介绍利用QProcess获取计算机的CPU、主板、硬盘等电脑相关硬件信息。windows提供了“wmic”(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持。可以打开cmd在其中输入如下命令,获取相关的信息。原创 2022-11-15 11:40:58 · 2200 阅读 · 1 评论 -
使用Qt编写模块化插件式应用程序
生成Test项目,输出Test.exe。在IAnimal接口中,我们定义了三个纯虚函数Eat()、Run()和Sleep(),表示吃、跑和睡眠的动作,这是抽象的,因为不同的动物有不同的吃相和睡眠姿态,而世间的动物何止千千万——无所谓,让这些具体动物的不同表现交给IAnimal插件的编写者发挥吧——这就是接口的魅力,加上插件的思想,整个应用程序就变成开放的,可扩展的了!COM是一个很成功的例子,只要符合COM的规范,我们就能编写出很好的DLL来,然而COM是微软私生的,要想跨平台,我们还得另找它路。原创 2022-11-14 18:24:21 · 882 阅读 · 2 评论 -
#pragma region
但是在Visual Studio 2005中,当#pragma region之后包含类似“1st”这类的文字,会导致“error C2059: syntax error : 'bad suffix on number'”的编译错误。当你折叠代码块后,这些文字会显示在折叠的位置。折叠代码块的方法:如同Visual C++中折叠函数、类、命名空间,当代码被包含在如上所述的指令之间后,#pragma region这一行的左边会出现一个“-”号,单击以折叠内容,同时“-”号会变成“+”号,再次单击可以展开代码块。原创 2022-11-14 15:38:48 · 1427 阅读 · 0 评论 -
C++的自定义结构——枚举、结构体、联合体
对于上述s1,char x占据1个字节,但是系统会以4个字节作为整体来看代。要注意,我们自己定义的枚举类型weekday是个变量,是可以作为左值的,但是枚举中的那些数据,如Monday是不能拿出来作为左值的,因为他们并不是一个具有存储空间的变量。如果上述结构体中内部有一个double变量,那么就不是以4字节作为一个整体来计算,而是8字节作为一个整体来计算。联合体的内存输出8我们很好理解,联合体公用一块内存空间,所以联合体的大小取内部变量最大的值,此例中最大的是double,所以大小为8。原创 2022-11-14 08:48:49 · 344 阅读 · 0 评论 -
C++中的自定义数据类型(结构体)解析
然后声明Student类型,将成员birthday指定为Date类型,即birthday作为Date结构体类型名的结构体变量,具有month,day,year三个属性。3、 关于初始化:在声明结构体数组的时候可以对其进行初始化,数据类型必须对应,和普通数组初始化的模式一样,不确定数组长度的时候可以不写数组长度直接声明初始化。2、 类型与变量是不同的概念,只能对结构体变量中的成员赋值,不能对结构体类型赋值。3、 如果成员本身也是一个结构体类型,则要用若干个成员运算符,一级一级找到最低一级的成员。原创 2022-11-14 08:44:38 · 2511 阅读 · 0 评论 -
【Qt】modbus之串口模式写操作
发送的数据为: QVector(0, 1, 4, 9, 16, 25, 36, 49, 64, 81)消息数据个数: 10 : QVector(0, 1, 0, 1, 0, 1, 0, 1, 0, 1)发送的数据为: QVector(0, 1, 0, 1, 0, 1, 0, 1, 0, 1)读到数据为: QVector(0, 1, 0, 1, 0, 1, 0, 1, 0, 1) 04. 写HoldingRegisters程序示例。 03. 写Coils程序示例。转载 2022-11-11 08:52:49 · 3006 阅读 · 0 评论 -
struct和typedef struct的区别
于是在声明变量的时候就可:Stu stu1;或者:student stu2;(Stu 和student 同时为Student的别名)和CHANGE a,b;方便了个人习惯,熟悉的人用CHANGE来定义int。在了解struct和typedef struct之前,我们先学习下typedef的定义和用法。就必须用struct Student stu1;或者struct Stu stu1来声明。现在回到struct和typedef struct的区别这个问题上来。另外这里也可以不写Student。原创 2022-11-11 08:25:04 · 3607 阅读 · 0 评论 -
【QT】应用程序输出中文乱码解决方法
点击“工具”,选择“选项”,在“环境” -> “Interface” 里,将“Text codec for tools”选择为“UTF-8”,点击“OK”。在代码里使用打印输出中文,编译后,查看运行结果。在应用输出窗口看到中文输出的结果为乱码。应用输出的编码默认是“system”,我们需要改为“UTF-8”.cout原创 2022-11-07 17:13:51 · 1089 阅读 · 1 评论 -
Qt 纯C++项目发布为dll的方法(超详细步骤)
但它有许多优点(请自查),而且据说这里的函数名可以利用.def文件实现不改变名称,省去好多麻烦,但是我尝试了各种方法,如在.pro中利用DEF_FILE添加.def文件还是不行55555,会的可以留言哦!请注意看红色框中的部分(不要管其他的,我的文件里面还有其他东西),这就是四个函数在.dll文件中的名称,我小小地猜测了一下,后面的v代表参数为void类型,i的个数代表int类型参数的个数,前面的字母就不太清楚了(注意:参数个数并未正确列出,不过我们只需要正确的函数名,不影响)。原创 2022-11-07 13:24:38 · 936 阅读 · 0 评论 -
QT 动态删除布局以及所有控件
【代码】QT 动态删除布局以及所有控件。原创 2022-11-07 06:54:24 · 1371 阅读 · 0 评论 -
QT不同分辨率适配问题
【代码】QT不同分辨率适配问题。原创 2022-11-07 06:52:24 · 1758 阅读 · 0 评论 -
在QT中创建我自己的异常并在函数中抛出异常
现在这个工作,但我觉得我不应该在我的例外每一个引用传递功能。我有什么选择?这是我觉得我应该能够做到的,但我不知道该怎么做。A。原创 2022-11-05 17:35:29 · 1404 阅读 · 0 评论 -
Qt抛出QException子类,但捕获了QUnhandledException
收集将来的结果时,Qt应该重新抛出QException子类。您可以通过const引用来捕获它,而不必在捕获后进行清理(调用。从QtConcurrent :: run运行的方法中,我用。然后,如果我正确理解了文档,则当我使用。您正在抛出一个指针,但正在获取参考。原创 2022-11-05 17:14:55 · 723 阅读 · 0 评论 -
Qt 之 QSqlError Class(如何捕捉Sql语句执行异常)
一个 QSqlError 对象可以提供特定数据库的错误信息,包括driverText() 和 databaseText() 消息(或是将两者结合的 text() 消息),还有nativeErrorCode() 和type().。构造一个QSqlError对象包含驱动错误文本driverText, 特定数据库错误文本databaseText,错误类型type和错误码code。该枚举描述了错误发生的上下文(环境),例如:一个连接错误,一个(SQL)语句错误,等等。返回错误类型,如果不能确定错误类型则返回-1。原创 2022-11-05 16:14:23 · 1653 阅读 · 0 评论 -
Qt 创建包含多个项目的工程以及各项目之间的调用
(3)右键工程文件夹 → add existing projects(QT版本5.14之前的版本好像没有这个选项,这个我也没有办法)→ 在弹出的窗口中选择你要添加的项目的Pro文件(我选中的是SignalAndSlot.Pro)在用QT做一个包含许多个小项目的大项目时,遇到了无法把多个项目合并到一个Pro的问题,后来经过艰苦尝试,终于可以在一个大项目下包含许多小项目了。(2)将你要添加的子项目的文件夹移到创建的大项目文件夹下,和大项目的Pro文件存储在一起。(我创建的大项目叫untitled)原创 2022-11-05 09:55:12 · 3037 阅读 · 0 评论 -
QT通过接口实现通信
实现功能,在第一个窗体A上新建二个Label,及一个按钮,点击窗体上上的按钮,打开B窗口,再在B窗口新建一个LineEdit编辑框,当B窗口编辑框中办理入文字的时候,改变窗体A上Label的文字,第一个Labele通过信号与槽实现,第二个通过接口实现。代码如下:定义接口类。原创 2022-11-05 09:23:44 · 982 阅读 · 0 评论 -
Qt之 信号与槽 connect新语法(自动关联)
例如:on_pushButton_clicked()由on、部件的objextName和信号3部分组成,中间由下划线隔开,这样组织的名称的槽就可以直接和信号关联,而不用使用connect函数,不过这种方式还需要进行其他设置,而前面之所以可以直接使用,是因为程序中默认设置过了,在在程序开头ui->setupUi(this)就是调用connectSlotsByNmae()函数支持信号与槽的自动关联的,在下面的例子中,我们的 signal 有一个QString参数,而 slot 需要的是QVariant。原创 2022-11-04 18:03:11 · 967 阅读 · 0 评论 -
QT5串口编程——编写简单的上位机
转自: QT5串口编程——编写简单的上位机_培培哥的博客-优快云博客_qt写上位机首先,QT5是自带QSerialPort(Qt5封装的串口类)这个类的,使用时需要在pro文件里面添加一行: 1在mainwindow.cpp文件夹中加入以下两个头文件 1 2QT5中,串口通信是借助一个QSerialPort的对象来实现的,在设置QSerialPort对象对串口的名称、波特率、数据位、校验位、停止位等参数后,方能对串口进行读写。下面,我总结了一下借助QSerailPort对串口原创 2022-11-04 08:51:26 · 5071 阅读 · 1 评论 -
Qt开发MQTT(一) 之Qt官方Qt MQTT
编译出来的Qt Mqtt库,要使用它有两种方式,一种是直接在项目中导入外部库和头文件,还有一种是将其以模块的形式部署到Qt的安装目录,其中第二种的好处就是,只需要做一次操作,以后需要再用Mqtt库就可以直接调用了,不需要每次都导入外部库。Qt开发MQTT程序有两种方式,一个是Qt官方提供的基于MQTT的封装,一个是第三方(EMQ)开发的用于Qt调用MQTT的接口,二者使用方法大同小异,并且均提供了源码。Qt官方在github上提供了源代码,地址:https://github.com/qt/qtmqtt。原创 2022-11-01 13:10:16 · 657 阅读 · 0 评论