qt
文章平均质量分 79
小飞侠hello
这个作者很懒,什么都没留下…
展开
-
qt 元对象系统及属性系统
type:连接类型;invokeMethod为信号槽而生,你可以指定连接类型,如果被调用的对象和发起调用的线程是同一线程,那么可以使用Qt::DirectConnection、Qt::AutoConnection、Qt::QueuedConnection,如果被调用对象在另一个线程,那么建议使用Qt::QueuedConnection;(4)函数qobject_cast(): 对于Object及其子类对象,可以使用函数qobject_cast()进行动态类型转换,此处可以理解为c++中的强制类型转换。原创 2024-04-17 15:10:59 · 635 阅读 · 0 评论 -
Qt使用插件QPluginLoader 机制开发
在这种情况下,插件可以提供任意功能,不限于数据库驱动程序、图像格式、文本编解码器、样式以及扩展Qt功能的其他类型的插件。这个宏第一次参数定义了一个uuid,保证唯一即可,第二个json是必须要有的,当无法找到指定的文件时,moc 会出现错误,即使是空的文件也行。如果 QPluginLoader 的其他实例正在使用相同的插件,则调用将失败,并且只有在每个实例都调用了 unload() 时才会发生卸载。一种高级API,用于为Qt本身编写插件:自定义数据库驱动程序,图像格式,文本编解码器,自定义样式等。原创 2024-04-08 11:16:52 · 1069 阅读 · 0 评论 -
qtxlsx 学习
QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件,可以在Qt5支持的任何平台上使用。原创 2024-03-27 13:53:45 · 861 阅读 · 0 评论 -
qt QProcess学习
terminate(),区别于 kill() 这种暴力的退出不同,它在退出进程的时候是有机会提示用户输入任何为保存的文件等。进程的输出通道与QProcess的读取通道相对应,⽽进程的输⼊通道与QProcess的写⼊通道相对应。这是因为我们使⽤QProcess读取的内容是进程的输出,⽽我们编写的内容则成为进程的输⼊。调⽤start()函数或open()函数启动进程。以分离的方式启动外部程序,外部程序与主程序互不干扰,外部进程的父进程是。的方式启动外部程序,外部进程与主程序互不干扰,但外部进程的父进程就是。原创 2024-03-21 08:45:09 · 996 阅读 · 0 评论 -
qt Qt Remote Object(QtRO)实现进程间通信
功能提供节点(可以理解为服务器)需要使用QRemoteObjectHost将一个提供实际功能的QObject派生类注册进QtRO网络中,然后其他使用该功能的程序则通过各自的QRemoteObjectNode连接到该Host上,然后acquire一个该功能对象的Replica。host 不能直接访问当前连接的 node,服务端是所有已连接的 node 共享的,如果 host-source 发信号,那么所有连接的 node 都会收到这个信号。Signal方法是通过使用rep文件中的SIGNAL关键字创建的。原创 2024-03-20 10:21:47 · 975 阅读 · 0 评论 -
linux 下崩溃文件coredump 生成及调试分析
Windows环境崩溃问题(dump)可根据vs调试或windbg工具查看.linux环境崩溃文件为core文件,可以使用gdb进行调试分析。原创 2022-12-30 18:29:03 · 3872 阅读 · 0 评论 -
NSIS 安装windows 安装包(包括QT和MFC)
Function<函数名>FunctionEn用户自定义函数仅当是Call指令调用时才被执行。原创 2024-01-09 09:27:10 · 1083 阅读 · 0 评论 -
Qt在linux系统上使用技巧
QT在生成动态库时,会默认生成(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)四个文件。其中,(.so.1.0.0)为实际的动态库文件,(.so)、(.so.1)、(.so.1.0)均为软链接,都是指向(.so.1.0.0)的链接文件,为了版本控制。直接通过绝对路径和相对路径指定库的完整path(需后缀,.lib,.a, .so都适用),相对路径用$$pwd前缀,路径不允许空格。可以用-L指定目录,-l指定库的名称(无需后缀,.lib,.a, .so都适用,这样就不用区分到底是哪种)原创 2024-01-08 16:38:21 · 1106 阅读 · 0 评论 -
学习grpc
int b = 10;Run();return 0;protobuf对简单数据的赋值,简单数据直接采用set_xx()即可该xx为proto文件的定义消息上的变量//在proto定义的消息uint32Type=1;//类型stringPath=2;//路径type(Type);path对应获取变量为直接是。原创 2023-07-06 10:55:55 · 225 阅读 · 0 评论 -
Qt数据类型转换
/按照Utf-8编码转换,可以转换中文。或者strOWPName = QString(QLatin1String(m_chOWPName));不包含中文的遇到中文默认转换为ascii码0x3f也就是字符’?第二种办法:使用静态函数fromUtf8 防止中文乱码,第二种办法:先转成标准库string,防止中文乱码。是本地操作系统设置的字符集编码,一般为GB2312.第一种办法:toUtf8 //防止中文乱码。原创 2023-06-27 19:32:31 · 827 阅读 · 0 评论 -
Qt 容器介绍
T必须是一个可赋值的类型,即提供一个缺省的构造函数、可拷贝构造函数、赋值运算符。其他的介绍可以参看:https://blog.csdn.net/baidu_16370559/article/details/123245803。QMultiHash相当于std::unordered_multimap 插入和查找时间复杂度都是o(1)QHash相当于std::unordered_map 插入和查找时间复杂度都是o(1)Qt容器对应STL容器,都是分为序列容器(顺序)容器、关联容器、散列(哈希)容器。原创 2023-06-27 19:03:47 · 820 阅读 · 0 评论 -
qt QDataWidgetMapper讲解
每次当前索引发生变化时,每个小部件都会通过映射时指定的属性使用来自模型的数据进行更新。默认情况下,每个小部件的用户属性用于在模型和小部件之间传输数据。/如果方向为水平,则使用模型第一行的数据填充小部件,否则使用第一列的数据。//按模型某行的数据映射到更新到部件,特别用于模型当前行改变时,发出的。//添加模型和部件的关联映射,section为模型某一列的序号。//将所有更改从映射的小部件提交到模型,用于。//所有未提交的更改都将丢失,用于。//得到当前模型的选中数据的行号。//删除小部件的映射。原创 2023-06-27 10:23:50 · 753 阅读 · 0 评论 -
qt QSqlRelationalTableModel 详解
用户接口层 用户接口层的几个类实现将数据库中的数据链接到窗口部件上,这些类是使用模型/视图框架实现的,他们是更高层次的抽象,主要包括QSqlQureyModel,QSqlRelationalTableModel为QSqlTableModel 的子类,为单张的数据库表提供了一个可编辑的数据模型,它。: 编辑一个数据表,将代码字段通过关系与代码表关联,将代码字段的编辑转换为直观的内容选择编辑。: 直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。主表的代码字段的序号。原创 2023-06-27 09:47:37 · 947 阅读 · 0 评论 -
Qt QSqlQueryModel详解
用户接口层 用户接口层的几个类实现将数据库中的数据链接到窗口部件上,这些类是使用模型/视图框架实现的,他们是更高层次的抽象,主要包括QSqlQureyModel,QSqlRelationalTableModel: 编辑一个数据表,将代码字段通过关系与代码表关联,将代码字段的编辑转换为直观的内容选择编辑。那如果想编辑修改,只能通过弹出一个对话框的,添加控件的方式进行修改,再结合。: 直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。//执行sql语句后,当前位置的结果,位置由。原创 2023-06-26 20:44:05 · 1750 阅读 · 0 评论 -
Qt QSqlTableModel详解
用户接口层 用户接口层的几个类实现将数据库中的数据链接到窗口部件上,这些类是使用模型/视图框架实现的,他们是更高层次的抽象,主要包括QSqlQureyModel,: 直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。//设置记录数据的过滤条件,过滤的字符串实际上为sql语句where后的字段。//QModelIndex 类的data函数,从而得到某行某列的数据。//查询数据表的数据,并使用设置的排序和过滤。原创 2023-06-26 19:20:50 · 3217 阅读 · 1 评论 -
qt读写文本文件
QIODevice::Text 0x0010 读的时候,文件结束标志位会被转为’\n’;写的时候,文件结束标志位会被转为本地编码的结束为,例如win32的结束位’\r\n’QIODevice::Truncate 0x0008 打开文件之前,此文件被截断,原来文件的所有数据会丢失。QIODevice::WriteOnly 0x0002 只写方式,如果文件不存在则会自动创建文件。QIODevice::Append 0x0004 此模式表明所有数据写入到文件尾。读:read、readall函数。原创 2023-06-23 16:21:42 · 1314 阅读 · 0 评论 -
qt读写二进制文件
注意:必须调用setversion函数设置流版本号,读写流版本号相同,或者读高于写。//向文件流连续写入len个字节的数据,这个只写入数据,不写入数据大小到文件。缺点:也正是因为采用qt预定义的编码,其他编码语言不兼用。//适合于写入字符串数据,先写入字符串的长度到文件,再写入字符串到文件。特点:采用qt预定义的编码。原创 2023-06-26 08:46:45 · 3364 阅读 · 0 评论 -
Qt读写csv文件
一次性读取整个csv文件,先按换行符“\n”进行分割,再按分隔符“,”进行分割。实现复杂:相对于第一种实现方式,该方法需要处理编码问题和字节流转换问题,因此实现方式相对复杂一些。同时,该实现方式要求数据顺序不能改变,因为每行数据只存储在单独的QStringList中。readLine读取每行数据,再使用split进行分割,得到QStringList 数据。当数据量大的时候,使用该方法逐行写入文件,文件I/O开销相对较大,导致写入速度变慢。进行写操作,并写入分隔符“,”和换行符“\n”。原创 2023-06-23 15:11:04 · 3257 阅读 · 0 评论 -
qt读写xml文件
将整个 XML 文档读入内存,构建成一个树结构,允许程序在树结构上向前向后移动导航,这是与另外两种方式最大的区别,也就是允许实现多次解析器(对应于前面所说的一次解析器)。特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一次性处理 XML 文档,期间不会有反复的情况,也就是不会读完第一个标签,然后读第二个,读完第二个又返回去读第一个,这是不允许的);获取含有属性节点的属性。//获取根/子标签的标签名字,对应于createElement函数的参数。原创 2023-06-23 14:56:48 · 3938 阅读 · 0 评论 -
Qt连接Access数据库
SQL API层 对于SQL API 层提供了数据库的访问相关类,其中,QSqlDataBase类进行连接,QSqlQuery完成数据库的交互。用户接口层 用户接口层的几个类实现将数据库中的数据链接到窗口部件上,这些类是使用模型/视图框架实现的,他们是更高层次的抽象,主要包括QSqlQureyModel,QSqlTableModel and QSqlRelationalTableModel。QSqlTableModel : 直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。原创 2023-06-19 20:22:20 · 2366 阅读 · 0 评论 -
Qt调试详细日志文件输出
生成log.txt日志文件,记录详细日志信息(包括等级、所在文件、所在行号、描述信息、产生时间等),以便于快速跟踪、定位。恢复消息处理程序,调用qInstallMessageHandler(0)。那么在qt createor的应用程序输出窗口就不会有调试信息显示。包括等级、所在文件、所在行号、描述信息、产生时间。安装写在main()方法中,这样全局所有类的。都可以将信息直接打印到日志文件中。等函数输出信息重定向处理。qWarning:警告信息。,对qDebug()、回调函数处理日志信息,原创 2023-06-19 19:40:33 · 1953 阅读 · 2 评论 -
Qt实现HTTP
创建QNetworkAccessManager对象后,应用程序就可以使用它通过网络发送请求。该类提供了一组标准函数,它们接收请求和可选数据,每个函数都返回一个QNetworkReply对象。由于QNetworkAccessManager基于QObject,因此只能从它所属的线程中使用它。等类来进行HTTP、FTP的操作,替代之前的QFtp和QHttp。网络通信中最常用的协议就是http协议,Qt对http协议的调用进行了封装,使用非常方便.从Qt4.4开始,引入了。原创 2023-03-17 11:06:16 · 1473 阅读 · 0 评论 -
qt 之QJsonDocument、QJsonObject、QJsonArray解析json
QJsonObject类用于封装JSON对象。JSON对象是包含键值对的链表,其中键是唯一的字符串,其值由QJsonValue对象。用size()来获得键值对的数目,insert()、remove()分别用来插入和删除pair。QJsonDocument和QJsonObject的关联通过调用QJsonDocument的setObject或者直接构造函数参数。QJsonDocument提供了读写Json文档的方法.可以将QJsonDocument转换回文本形式。将基于JSON文档的文本形式转换为QJson。原创 2023-03-16 19:29:07 · 1331 阅读 · 0 评论 -
Qt之QUrl和QUrlQuery
QUrlQuery 类提供了一种方法来操纵 URL 查询中的 key-value 对。上述的查询字符串在 URL 中 被用来传输选项,通常解码为多个 key-value 对。其列表包含了的两个条目,键为“type”和 “color”。原创 2023-03-16 19:05:16 · 990 阅读 · 0 评论 -
VMware 安装 银河麒麟高级服务器操作系统 V10 + QT 开发环境搭建
从官网下载,因为是x86的电脑芯片,选择AMD64版,即。打开网络,ip4就不用再设置了。创建一个root账号。原创 2023-03-04 16:18:40 · 2149 阅读 · 0 评论 -
qt QCustomPlot学习
QCustomPlot 是一个基于Qt的画图和数据可视化C++控件。QCustomPlot 致力于提供美观的界面,高质量的2D画图、图画和图表,同时为实时数据可视化应用提供良好的解决方案。该绘图库专注于制作美观、出版物质量高的2D绘图、图形和图表,并为实时可视化应用程序提供高性能。原创 2023-02-24 16:19:23 · 6077 阅读 · 1 评论 -
qt 可视化ui设计
QMainWindow 是主窗口类,主窗口类具有主菜单栏、工具栏和状态栏,类似于一般的应用程序的主窗口;QWidget是所有具有可视界面类的基类,选择QWidget创建的界面对各种界面组件都可以支持;QDialog是对话框类,可建立一个基于对话框的界面。原创 2023-02-23 12:14:53 · 1345 阅读 · 0 评论 -
qt qchart学习
新图表的所有权被传递给图表视图,并且先前图表的所有权被释放。3. 在使用QChart的各个控件之前,引用头文件并必须先声明一个命名空间。QChartView是QGraphicsView子类,相当于是显示图表的视图。QChart是QGraphicsItem的子类,相当于是显示图表的图形项。原创 2023-02-22 17:49:46 · 2103 阅读 · 0 评论 -
QT pri文件模块化开发
在源码的目录下,创建一个文件夹命名如graphicsviewsitem。在文件夹创建一个.pri文件如graphicsviewsitem.pri.把你要分类的源文件和头文件从工程目录底下剪切到view文件夹底下和pri同级。在pro文件中添加pri文件。在pro中把头文件路径加进来。在项目的Pro文件中加入。把头文件和源文件剪贴过去。原创 2023-02-21 17:27:41 · 103 阅读 · 0 评论 -
QT 拖拽 QListWidget发送,Qgraphicview接收
主要重写dragEnterEvent、dragMoveEvent、dropEvent。测试发现:item在视图存放的位置一直有问题。也没有解决item图形项位置的问题。尝试使用视图类来处理拖拽,参考。原创 2023-02-20 17:58:47 · 893 阅读 · 0 评论 -
模型视图 上控件的拖拽
模型通过重新实现 QAbstractItemModel::flags() 函数以提供合适的标志,向视图指示哪些项目可以拖动,哪些将接受放置。模型通过重新实现 QAbstractItemModel::mimeTypes() 函数并返回标准 MIME 类型列表来声明它们可用于提供项目的 MIME 类型。拖入的数据由模型重新实现的 QAbstractItemModel::dropMimeData() 处理。属性用于控制在拖拽过程中显示当前拖拽到的位置,当释放时则在当前拖拽位置覆盖或插入。模型对拖放操作的支持。转载 2023-02-20 15:19:41 · 289 阅读 · 0 评论 -
qt 内存泄漏处理办法
b.将“vld安装目录/lib/Win64"或者“vld安装目录/lib/Win32"(注意位数,根据你的Qt库位数确定)下的vld.lib拷贝到qt具体项目的lib目录。可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号;可以设置内存泄露报告的级别。a.复制vld安装目录下include文件夹中的文件vld.h和vld_def.h到qt具体项目的include文件夹中。将安装目录下的VLD\bin\Win32和VLD\bin\Win64添加到系统环境变量path里。原创 2023-02-17 12:17:36 · 2181 阅读 · 0 评论 -
qt 崩溃处理
配置Symbol file path(符号路径)、Source file path(源文件路径)、 Image File Path(可执行文件路径):可执行文件路径(这个选择具体的exe文件报错,只能选exe文件所在文件夹)release版本是不会自动生成pdb文件的。:把生成的pdb文件所在目录及微软符号服务器加进去。生成exe自带生成pdb文件,所以无需处理。办法是:在pro文件中加入。原创 2022-12-30 16:39:58 · 2857 阅读 · 0 评论 -
Windows上Qt源码调试(使用VS2017调试qt5.12.0)
环境:vs2017 + qt 5.12.0 msvc32和msvc64把所用 Qt 库版本对应源码(qt-everywhere-src-5.12.0)下载来解压(https://download.qt.io/archive/qt/5.12/5.12.0/single/),或者安装时选择把源码(source 选项)一并安装。在解决方案的属性页(不是工程属性)里添加源文件目录。MSVC 编译器的话,还需要 pdb 文件,不然最后还是不能进入源码的(MinGW没影响)。不同版本的 pdb 文件,Qt 放的目录不同原创 2022-12-05 11:28:50 · 2843 阅读 · 0 评论 -
qt 消息(事件)机制
通过QEventLoop::exec()可以进入一个消息循环的阻塞状态中,也就是不断地PeekMessage、TranslateMessage、DispatchMessage(和windows 消息机制差不多的)。每一个事件处理函数,都是带有参数的,这个参数是QEvent的子类,携带了各种事件的参数。Application类中,除去启动参数、版本等相关东西后,关键就是维护了一个QEventLoop,QT将系统产生的消息转化为QT事件,QT事件被封装为对象,所有的QT事件均继承抽象类QEvent。原创 2022-11-27 11:56:40 · 2776 阅读 · 0 评论 -
qt 常见知识点
2、当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是 parent,也就是父对象指针。这相当于,在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表。任何对象树中的 QObject对象 delete 的时候,如果这个对象有 parent,则自动将其从 parent 的children()列表中删除;当父对象析构的时候,这个列表中的所有对象也会被析构。原创 2022-11-26 18:08:51 · 1696 阅读 · 0 评论 -
qt 绘图QPainter
当图片小的情况下,直接用QPixmap进行加载,画图时无所谓,当图片大的时候如果直接用QPixmap进行加载,会占很大的内存,一般一张几十K的图片,用QPixmap加载进来会放大很多倍。QWidget类及其子类是最常用的绘图设备,从QWidget类继承的类都有paintEvent()事件,只需要重定义此事件就行。QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的。一般图片大的情况下,用QImage进行加载,然后转乘QPixmap用户绘制。原创 2022-11-24 16:20:43 · 2890 阅读 · 0 评论 -
qt qml与c++
QMl是一种高效的开发UI 的语言。QML(Qt Meta-Object Language,Qt元对象语言)是一种声明式编程语言,并且它是Qt框架的一个组成部分。Action 对应QAction,提供能够绑定到导航和视图的抽象的用户界面动作。StackView 对应QStackedWidget,提供基于栈的层叠布局。TabView 对应QTabWidget,提供带有标签的基于栈的层叠布局。TabView 对应QTabWidget,提供带有标签的基于栈的层叠布局。原创 2022-11-18 17:27:47 · 1456 阅读 · 1 评论 -
qt 样式表 qss
Qt样式表是一个可以自定义部件外观的十分强大的机制﹐除了那些能够通过子类化QStyle更改的外观,其余的都可以使用Qt样式表来美化。实现办法:调用setStyleSheet 函数,其中styleSheet一般通过读取配置文件.qss实现。如style.qss文件如下。原创 2022-11-17 23:02:48 · 2193 阅读 · 0 评论 -
qt 截屏
一:截取整个屏幕它就是QScreen类的grabWindow函数. 参数是窗口ID和要截取的区域(x、y、width和height组成的矩形区域)。窗口ID可以通过QWidget的winId()获得,若截取整个屏幕窗口ID传入0。如 QScreen *screen = QGuiApplication::primaryScreen(); // 这个是有界面的, 获取电脑的当前设置的主屏幕 还有类似函数QApplication::primaryScreen();...原创 2020-12-03 09:37:43 · 2128 阅读 · 0 评论