![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT专栏
文章平均质量分 69
houxian1103
这个作者很懒,什么都没留下…
展开
-
在Qt5中SQLite3的使用
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。原创 2023-09-10 00:36:10 · 1113 阅读 · 0 评论 -
QT项目使用Qss的总结
QSS称为Qt Style Sheets也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制。QSS大量参考了CSS的内容,只不过QSS的功能比CSS要弱很多,体现在选择器要少,可以使用的QSS属性也要少很多,并且并不是所有的属性都可以用在Qt的所有控件上。原创 2023-08-27 23:21:34 · 2601 阅读 · 1 评论 -
Qt 项目架构之----MVC架构
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。原创 2023-07-16 01:27:59 · 1544 阅读 · 1 评论 -
Qt 常用全局宏定义
用于函数中未使用的变量,告诉编译器这个变量不需要告警。使用 Q_DECL_OVERRIDE 宏后,如果重载的虚函数没有进行任何重载操作,编译器将会报错。用于将一个虚函数定义为最终级别,不能再被重载,或者定义一个类不能再被继承。不需要 signals 关键字就可以将一个函数指定为 singal 函数。不需要 slots 关键字就可以将一个函数指定为 slot 函数。在 pro 文件添加如下代码,软件中所有 QDebug 将失效。表示系统内存中数据使用的字节序;函数所属类和参数信息。原创 2023-07-09 15:56:19 · 1302 阅读 · 0 评论 -
QT多线程之QtConcurrent::run()
调用run()之后,函数不一定会被立即执行,如果有多个run()被调用,函数的调用顺序不一定是run()的调用顺序,这些都和线程的调度有关系。run(function) 实际上等价于run(QThreadPool::globalInstance(),function)如果只是简单的想在其他线程中调用某个函数,不需要复杂的数据同步,那么QtConcurrent::run()相比其他实现多线程的方式绝对是不二之选。原创 2023-06-29 00:08:41 · 6962 阅读 · 0 评论 -
Qt 中线程池的使用
在 Qt 中使用线程池需要先创建任务,添加到线程池中的每一个任务都需要是一个 QRunnable 类型,因此在程序中需要创建子类继承 QRunnable 这个类,然后重写 run() 方法,在这个函数中编写要在线程池中执行的任务,并将这个子类对象传递给线程池,这样任务就可以被线程池中的某个工作的线程处理掉了。得到线程池对象之后,调用 start() 方法就可以将一个任务添加到线程池中,这个任务就可以被线程池内部的线程池处理掉了,使用线程池比自己创建线程的这种多种多线程方式更加简单和易于维护。原创 2023-06-28 18:26:08 · 7989 阅读 · 0 评论 -
Qt中多线程的使用
在进行桌面应用程序开发的时候, 假设应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行效率。默认的线程在Qt中称之为窗口线程,也叫主线程,负责窗口事件处理或者窗口控件数据的更新子线程负责后台的业务逻辑处理,子线程中不能对窗口对象做任何操作,这些事情需要交给窗口线程处理。原创 2023-06-26 23:59:24 · 7919 阅读 · 0 评论 -
Qt 在Windows下设置Wifi连接和有线连接
【代码】Qt 在Windows下设置Wifi连接和有线连接。原创 2023-06-23 23:30:51 · 8747 阅读 · 0 评论 -
Qt 发送带结构体数据的信号
因为跨线程时,当发送方信号发出时,此时接受对象所在的线程未取得控制权,所以需要发送方需要将信号放在信号队列中储存发送的参数,QT就会去构造对象,而我们定义的是自定义类型,所以需要使用qRegisterMetaType()来注册,告诉QT怎么去构造对象.原创 2023-06-23 18:51:22 · 7977 阅读 · 0 评论 -
Qt 实现应用程序单实例
但有一个致命缺陷:共享内存(QSharedMemory)实现的单程序运行,当运行环境是UNIX时,并且程序不幸崩溃,会导致共享内存无法释放,从而无法重新运行程序!使用共享内存,当第二个进程启动时,判断内存区数据是否建立,如有,则退出;这种方式有弊端,在程序发生崩溃时,未及时清除共享区数据,导致程序不能正常启动。在程序运行的时候就在目录下创建一个文件,当程序运行时就判断这个文件是否存在,如果存在说明程序已经在运行。使Qt应用程序能够单实例运行的典型实现方法是使用共享内存实现。该方法实现简单,代码简洁。原创 2023-06-23 17:05:40 · 8680 阅读 · 0 评论 -
Qt 信号和槽
信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。槽的本质是类的成员函数,其参数可以是任意类型的。和普通C++成员函数几乎没有区别,它可以是虚函数;也可以被重载;原创 2023-06-22 22:35:42 · 10182 阅读 · 0 评论 -
Qt 定时器与定时事件
对于一个 QObject 的子类,只需要使用 int QObject::startTimer ( int interval) 函数来开启一个定时器,这个函数需要输人一个以毫秒为单位的整数作为参数来表明设定的时间,它返回一个整型编号来代表这个定时器。这里在构造函数中开启了一个 1 秒的定时器,当它溢出时就会发射 timeout() 信号,这时就会执行我们的定时器溢出处理函数。使用 QTimerEvent 的 timerId() 函数来获取定时器的编号,然后判断是哪一个定时器并分别进行不同的操作。原创 2023-06-18 00:53:37 · 11090 阅读 · 0 评论 -
Qt下存储读写应用程序设置的三种方法
List item用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小、位置和密码等等。使用注册表;使用配置文件(.ini);使用自定义文件(例如.txt)。/*****************将设置的锁屏时间数值写入文本中*****************/ //读取文本 QFile file(config . txt);while(!原创 2023-06-18 00:30:29 · 10461 阅读 · 0 评论 -
QT实现 WebsocketServer端与WebsocketClient 端通信
1、该示例代码简单实现了webSocketServer的创建。但是并没有用到多线程的技术,所以对并发处理不不适合。2、本示例对数据处理,和错误事件并没有很好的解析,这需要后续实现。原创 2023-06-03 21:46:03 · 20598 阅读 · 2 评论 -
Qt之界面 自定义标题栏、无边框、可移动、缩放
titleBar.hprotected : //双击标题栏进行界面的最大化/还原 virtual void mouseDoubleClickEvent(QMouseEvent * event);//进行界面的拖动 virtual void mousePressEvent(QMouseEvent * event);//设置界面标题与图标 virtual bool eventFilter(QObject * obj , QEvent * event);原创 2023-05-21 00:33:34 · 18786 阅读 · 0 评论 -
Qt 获取程序所在路径等特殊路径
经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径、用户目录路径、临时文件夹等。在 Qt 中实现这几个功能所用的方法虽然都不难,但是各不相同,每次用到时还要现去查,很不方便。因此就写了这篇博客,把这几种需求的实现方式总结了一下。原创 2023-05-17 23:29:38 · 19503 阅读 · 0 评论 -
qss简介大全
Qt style sheet, 简写就是qss, Qt样式表,不需要用C++代码控件进行重载,就可以修改控件外观,美化界面,类似于前端的css, 但是没有css功能强大. 例如下面QLabel的样式设置除了以上样式外,还有很多,qss千变万化,可以写出各种花里胡哨的样式。原创 2023-05-10 22:21:57 · 21604 阅读 · 1 评论 -
MySQL 字段为 NULL 的坑,你踩过吗?
很多小知识点,我以为自己懂了,实际没搞透。数据库字段允许空值(null)的问题,你遇到过吗?在验证问题之前,我们先建一张测试表及测试数据。构建的测试数据,如下图所示:有了上面的表及数据之后,我们就来看当列中存在 NULL 值时,究竟会导致哪些问题?原创 2023-05-09 23:53:30 · 21097 阅读 · 0 评论 -
Qt Plugin插件开发
插件是一种遵循一定规范的应用程序接口编写出来的程序,定位于开发实现应用软件平台不具备的功能的程序。插件与宿主程序之间通过接口联系,就像硬件插卡一样,可以被随时删除,插入和修改,所以结构很灵活,容易修改,方便软件的升级和维护。Qt 提供了两种API用于创建插件:一种是高阶 API,用于扩展 Qt 本身的功能,如自定义数据库驱动,图像格式,文本编码,自定义样式等;一种是低阶 API,用于扩展 Qt 应用程序。本文主要是通过低阶 API 来创建 Qt 插件,并通过静态、动态两种方式来调用插件。原创 2023-05-07 00:00:54 · 24786 阅读 · 1 评论 -
Qt 界面开发问题汇总
/ 只要关闭按钮 setWindowFlags(Qt :: WindowFlags type)原创 2023-04-13 22:52:48 · 10203 阅读 · 0 评论 -
Qt 封装HTTP网络工具类HttpClient
/ [[1]] GET 请求无参数 HttpClient("http://localhost:8080/device") . success([ ](const QString & response) {}) . get();更多的使用方法请参考 main() 里的例子。HttpClient 的实现为 HttpClient.h 和 HttpClient.cpp 部分。原创 2023-04-12 23:54:13 · 16664 阅读 · 0 评论 -
Qt 自定义日志类总结
main.cpp: 使用示例LogHandler.h: 自定义日志相关类的头文件LogHandler.cpp: 自定义日志相关类的实现文件单个日志文件例如大于 5M 后重新创建一个新的日志文件;删除超过 30 天的日志;使用锁确保多线程安全。日志的相关配置数据例如输出目录写到配置文件;日志可以选择存放在服务器。原创 2023-04-03 09:18:02 · 27908 阅读 · 0 评论 -
Qt 输入输出设备和文件操作
文件的数据读写一般使用QTextStream或者QDataStream来完成,不过也可以使用继承自QIODevice类的一些函数,比如read()、readLine()、readAll()和write(),还有一次只操作一个字符的getChar()、putChar()和ungetChar()等函数。可以使用size()函数来获取文件的大小,使用seek()来定位到文件的任意位置,使用pos()来获取当前的位置,使用atEnd()来判断是否到达了文件的末尾。数据流也可以读/写未编码的原始二进制数据。原创 2023-04-02 00:18:27 · 28814 阅读 · 0 评论 -
QT控件Demo与样式加载与使用
在我们的开发过程中,使用控件通常通过样式来实现的,下面的几个控件就是使用样式来实现的。效果如下图:代码初始化QprogressBar样式表的加载skin.qssqss简介大全注释形式:除了以上样式外,还有很多,qss千变万化,可以写出各种花里胡哨的样式。解释如下:字体也可以一起设置:同时设置字体 style weight size family 的样式时,style(是否斜体) 和 weight (是否加粗)必须出现在开头,size 和 family 在后面,而且 size 必须在原创 2023-03-30 22:15:23 · 28428 阅读 · 0 评论 -
QPushButton 使用详情与总结
【代码】QPushButton 使用详情与总结。原创 2023-03-20 01:02:41 · 32559 阅读 · 0 评论 -
QLineEdit 使用总结
setPlaceholderText()设置提示文字搜索输入框,没有输入任何字符时,显示“电影、影人、影院、电视剧”这些占位文字,对用户输入作相关提示。echoLineEdit -> setPlaceholderText("电影、影人、影院、电视剧");setEchoMode()设置模式淘宝登录界面的一部分,用户名可以直接看到,密码一般都用小黑点掩盖。case 0 : // 默认,输入什么即显示什么 echoLineEdit -> setEchoMode(QLineEdit :: Normal);原创 2023-03-18 01:03:05 · 31892 阅读 · 0 评论 -
Qt浅谈内存泄露
Qt 内存管理机制:Qt 在内部能够维护对象的层次结构。对于可视元素,这种层次结构就是子组件与父组件的关系;对于非可视元素,则是一个对象与另一个对象的从属关系。在 Qt 中,在 Qt 中,删除父对象会将其子对象一起删除。C++ 中 delete 和 new 必须配对使用(一 一对应):delete 少了,则内存泄露,多了麻烦更大。原创 2023-03-16 22:01:15 · 31403 阅读 · 0 评论 -
QT 无边窗口圆角实现
通过代码实现,首先是去掉了窗口边框,通过设置style 来完成,然后也要在 PaintEvent 上进行绘制。通过代码实现,首先是去掉了窗口边框,然后要在 PaintEvent 上进行绘制。好了,上边就是我们实现的两种方式,大家根据自己的情况来使用吧。原创 2023-03-14 10:57:43 · 31635 阅读 · 0 评论 -
Qt 文件常见操作实现
ifndef FILEMGR_H # define FILEMGR_H // Qt文件管理类 # include # include # include # include # include class FileMgr {public :// 文件是否存在 bool createDir(QString sDirPath);原创 2023-03-12 20:25:16 · 33127 阅读 · 1 评论 -
QTableView 基本使用
表格视图控件 QTableView,需要和 QStandardItemModel 配套使用,这套框架是基于 MVC 设计模式设计的,M(Model) 是 QStandardItemModel 数据模型不能单独显示出来。V(view) 是指 QTableView 视图,要来显示数据模型,C(controllor) 控制在 Qt 中被弱化,与 View 合并到一起。原创 2023-03-08 09:27:11 · 37128 阅读 · 0 评论 -
QT的Listwidget控件
Qt 中用于项(Item)处理的组件有两类,一类是 Item Views,包括 QListView、QTreeView、 QTableView、QColumnView 等;另一类是 Item Widgets,包括 QListWidget、QTreeWidget 和 QTable Widget。QListWidget其实是QListView的遍历类,QListView 是基于模型/视图(Model/View)结构,视图(View)与模型数据(Model Data)关联实现数据的显示和编辑;原创 2023-03-06 10:40:11 · 35542 阅读 · 1 评论 -
QT QTabWidget 使用
QTabWidget 为选项卡小部件,提供一个选项卡栏(参见 QTabBar)和一个“页面区域”,用于显示与每个选项卡相关的页面。默认情况下,选项卡栏显示在页面区域的上方,但是可以使用不同的配置(请参见 TabPosition)。每个选项卡都与不同的小部件(称为页面)相关联。页面区域中只显示当前页面;其他所有页面都隐藏。用户可以通过单击其选项卡或按 Alt+ 字母快捷键(如果有)来显示不同的页面。使用 QTabWidget 的正常方法是执行以下操作:创建一个 QTabWidget。原创 2023-03-02 23:52:04 · 21511 阅读 · 0 评论 -
QT 实现动态分屏的
在我们开发场景应用中会经常遇到,要求能够动态分屏,从一分屏到二分屏、三分屏、四分屏、五分屏、六分屏,可能会更多。原创 2023-03-01 15:29:59 · 33188 阅读 · 0 评论 -
QT 实现右键菜单
this可以改为其它组件指针,这样就可以在指定组件内右键才弹出菜单。这里指在整个窗口右键都会弹出菜单。有时我们希望在窗口中右键弹出菜单,这里来介绍一下QT中怎么实现.原创 2023-02-28 23:05:01 · 2069 阅读 · 0 评论 -
QT 栅格布局 (QGridLayout)
QGridLayout 占用来自其父布局或 parentWidget()获得的空间,将其划分为行列表格形式,在每个布局的表格里放置控件或者布局器就行。新建QGridLayout之后,在桌面上就会出现一个网格状的布局,这个布局是看不见的,如下表格一样,那么如何确定这样的表格有几行几列呢?可以对其进行初始化。原创 2023-02-28 14:28:14 · 3802 阅读 · 0 评论 -
Qt 垂直布局 (QVBoxLayout)
如果要控件之间的间距相同用设置间距就可以,增加间距是做控件之间间距不一样效果.上边就相当于有一个弹簧顶着 , 你窗口变高 他的弹簧就会拉伸。原创 2023-02-27 23:19:58 · 18164 阅读 · 0 评论 -
Qt 水平布局(QHBoxLayout)
Qt 水平布局(QHBoxLayout),QHBoxLayout: 在水平的方向上排列控件 左右排列。原创 2023-02-27 17:41:55 · 18201 阅读 · 0 评论 -
Qt信号与槽使用方法总结
在图形界面编程中QT是为首选,组件之间如何实现通信是核心的技术内容。Qt 使用了信号与槽的机制,非常的高效、简单、易学,方便开发者的使用。本文详细的介绍了Qt 当中信号与槽的概念,并演示了各种信号与槽的连接方式。信号和槽是用于对象之间的通信,它是Qt的核心机制,在Qt编程中有着广泛的应用。如果想学好Qt,一定要充分掌握信号的槽的概念与使用。举个例子,在一个十字路口,信号灯变成了绿色,对面的汽车看到后就启动了。原创 2023-02-21 11:59:11 · 19691 阅读 · 0 评论 -
QT 实现简单的天气 哈哈
通过上面的代码就可以实现简单的网络请求服务端来展示简单的天气情况,数据源也是在网络上找到的。原创 2022-11-22 22:58:11 · 1587 阅读 · 0 评论 -
Qt平台下使用QJson 使用
在Qt开发环境下使用Json 的解析和输出当然要使用QJson来完成。QJson解析JSON 主要使用的类如下原创 2022-11-20 17:46:09 · 17153 阅读 · 0 评论