- 博客(133)
- 资源 (33)
- 收藏
- 关注
原创 Qt基础教程介绍
从去年开始整理了Qt基础相关的内容,具体内容包含了信号槽、事件、界面布局、控件样式表、QPainter图形绘制、多线程等方面的知识。这些内容对于学习Qt编程非常重要,每篇文章都是用心在写,期间翻阅了大量的Qt文档结合查询一些的资料避免出现错误的观点,努力争取让文章更加浅显易懂,每个知识点配合代码实例进行讲解,并且后期会继续地扩充和完善这些内容。对于Qt新手或者小白非常推荐学习,对于订阅的小伙伴可以加QQ(3062974430)获取一些书籍和视频学习资料。
2023-06-27 15:19:55 943
原创 Qt之使用GraphicsView框架实现思维导图功能
一、简述我们常见的思维导图类型XMind软件,功能十分强大,提供了各式各样的导图样式、形式,那我们可以用Qt实现思维导图的功能吗,答案肯定是可以的,用图说明。1、静态方式读取本地数据的方式进行展示。2、优化(1)增加选中效果(2)优化连接线条3、动态方式(1)可自由添加/删除节点(2)双击可重命名节点(3)可折叠节点(4)每层节点颜色可自定义(5)支持xml格式数据的保存/读取(可拓展为其他格式或数据库)线条绘制Codevoid LineTest::paintEvent
2022-05-10 18:20:29 5462 17
原创 Qt之时间轴样式汇总
一、简述根据小伙伴的反应情况,时间轴的需求还是挺多的,对应视频播放,视频监控等功能都需要时间轴的辅助。时间轴也是各式各样,但都大同小异。时间轴的功能大致可以总结为一下几点:自由设置时间段刻度间隔可设置时间表达式(1、01、1:00、01:00)刻度线,刻度值,背景样式颜色鼠标滚轮放大缩小功能(时间刻度比较拥挤时很管用)鼠标拖拽移动时间刻度时间轴与数据相结合(比如监控视频时间区间...
2019-05-17 17:02:35 13043 11
原创 Qt 之 自定义窗口标题栏
首先自定义标题栏解决了我们程序在不同平台乃至同一平台不同的版本中样式不同的问题,使用自定义标题栏,能够保证外观的一致性,这也是为什么像QQ、有道词典、360等软件都没有使用系统标题栏,都是自定义标题栏了。正是因为自定义标题栏,我们可以自定义不再受约束,想怎么设计就怎么设计。自定义标题栏可以使用自己设计的图标,当然比系统的图标要美观了,颜值当然更高了。下面就讲一讲如何用Qt实现自定义窗口标题栏。
2016-12-06 23:20:44 81253 120
原创 VS如何修改生成的exe程序的名称
在日常开发中,我们一般会将工程名称设置为生成的exe程序的名称,在VS编译器中,默认生成的exe名称取自工程名称,所以如果是已经建立好工程,想要修改生成的exe名称,可以通过工程属性修改。
2024-10-15 21:45:00 567
原创 Qt如何将外部窗口嵌入部件中
今天给大家讲解的是使用QWindow类通过窗口句柄将外部的应用程序嵌入到我们的部件中来显示。在讲解之前可以延伸一下,当时项目中使用QProcess启动一些本地软件或者执行脚本时,需要将启动的第三方窗口嵌入到我们自己写的窗口中,此时我们通过QProcess类的start方法执行相应的启动命令,并获取到启动程序的进程id(pid),然后通过pid获取到窗口对应的句柄,最后通过QWindow类创建容器将外部应用程序嵌入到我们的界面中来。
2024-09-29 21:08:10 937
原创 Qt获取本机Mac地址、Ip地址
今天给大家分享一个获取本机IP地址和Mac地址的方法,经过多次测试,台式机、笔记本等多个设备,暂时没有发现问题。由于很多时候本地安装了虚拟机、蓝牙、无线网卡或者其他设备等,会有多个Mac地址,所以需要进行多次过滤,其中也是遇到了很多坑,经过多次改进,如果小伙伴们有其他更好的方法,欢迎一起讨论。
2024-09-24 21:30:00 780
原创 如何让Windows控制台窗口不接受鼠标点击(禁用鼠标输入)
在我们编写控制台应用程序时,默认情况下程序的打印输出会在控制台窗口中进行显示,我们在写服务功能时在窗口中会不断打印消息输出,这个时候如果使用鼠标点击了控制台窗口,会阻塞程序的继续运行,导致我们的程序一直卡在那里不执行,这个时候需要我们按下enter键程序才会继续往下运行,就很头疼,有时候需要跑个流程需要运行很长时间,但是由于不小心点击了控制台窗口,导致程序被阻塞了一直没往下运行,白白等了半天时间,要不然就直接就禁止鼠标的输入,防止再次出现这种情况,下面通过很简单的方式来解决这个问题。
2024-09-14 20:30:00 895
原创 关于Win11系统生成dump文件失败的问题
在遇到无法生成dump文件时可以从多方面去查询问题的所在,本篇文章主要讲解在win11系统中无法生成dump文件的方法示例。
2024-09-10 08:59:46 1878
原创 Qt模仿磁轴键盘驱动
目前磁轴键盘使用越来越多,参考Wooting磁轴键盘驱动样式,使用Qt模仿出对应的界面效果图。支持多个键盘配列,104、98、84、82、81等配列。
2024-04-02 08:44:53 551 2
原创 5.1 QThread的两种使用方式
QThread类用于创建和管理线程,它并不是线程本身。通过使用QThread,我们可以在应用程序中实现并发执行的任务,从而提高应用程序的性能和响应能力,能够有效地利用CPU资源,提高程序运行效率。且QThread创建和管理线程的方式是独立于平台的,不管是windows、linux、还是macOS都是适用的。QThread对象还支持信号槽机制,在不同线程之间进行数据传递变得更加方便快捷。同时也提供了一系列方法和属性来帮助我们对线程进行管理和控制。
2024-01-04 19:00:00 1694
原创 Linux下QT生成的(.o)、(.a)、(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)之间的区别
其中,(.so.1.0.0)为实际的动态库文件,(.so)、(.so.1)、(.so.1.0)均为软链接,都是指向(.so.1.0.0)的链接文件,为了版本控制。(2)Linux 下 QT 生成的(.so)、(.so.1)、(.so.1.0)和(.so.1.0.0)四个文件的区别。QT在生成动态库时,会默认生成(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)四个文件。(1)Linux 下 QT 生成的(.o)、(.a)和(.so)三个文件的区别。动态库的后缀名为(.dll)。
2024-01-03 23:20:54 1787
原创 QPainter4.2.3-4.2.4
4.2.3 QPainter的save和restore4.2.4 QPainter的平移、放缩、旋转效果讲解。
2023-10-24 20:58:56 443
原创 4.2 QPainter的绘图接口介绍(上)
上一篇文章中讲述了在哪里绘图,怎么开始绘制,怎么跟绘制设备绑定、解绑等基础知识,今天就来点实操的,下面坐好了,开始阅读吧。下图是《C++ GUI Programming with Qt 4》这本书中列出的关于QPainter常用的画图方法,基本上都是以draw开头,对应的图片很直观地说明的每种方法的效果,并且很多方法都进行了重载,方便我们使用,非常地友好,下面我们对这些接口做一些详细的介绍。
2023-10-24 20:47:04 223
原创 4.1QPainter绘图讲解
4.QPainter绘图讲解4.1 初识QPainter4.2 QPainter的接口介绍4.2.1 QPainter中的画笔、画刷介绍4.2.2 QPainter绘制接口4.2.3 QPainter的save和restore4.2.4 QPainter的平移、放缩、旋转效果讲解。
2023-10-24 20:37:14 201
原创 3.2-3.4 Qt样式表使用补充说明
我们在编辑框中添加需要的样式即可,然后点击确定我们就可以看到设置的效果了,这里我们只对QPushButton设置了样式,那我们是不是对界面上每个控件都要单独设置样式呢?当然不需要,我们可以对整个界面设置样式,然后将所有控件的样式都写在其中就可以了。Qt的样式表编辑工具可以帮助我们检验样式是否编写正确。我们看到下面设置的样式有误,并没有检测出来,但是这里的错误只会影响这一条样式无效,而不会导致整个样式无效。
2023-09-18 10:58:16 178
原创 3.1 Qt样式选择器
3.1.1 Universal Selector (通用选择器)3.1.2 Type Selector (类型选择器)3.1.3 Property Selector (属性选择器)3.1.4 Class Selector (类选择器)3.1.5 ID Selector (ID选择器)3.1.6 Descendant Selector (后裔选择器)3.1.7 Child Selector (亲儿子选择器)3.1.8 补充。
2023-08-14 11:09:14 1583
原创 2.3 QLayout一探究竟(下)
2.布局2.1 布局简介2.2 Qt四大布局介绍及使用方法2.2.1 QBoxLayout讲解及示例2.2.1.1 QHBoxLayout介绍2.2.1.1 QVBoxLayout介绍2.2.2 QFormLayout讲解及示例2.2.3 QGridLayout讲解及示例2.2.4 QStackedLayout讲解及示例2.3.1 布局的基础单元-QLayoutItem2.3.1.1 QSpacerItem介绍2.3.1.2 QWidgetItem介绍2.3.2。
2023-07-23 00:17:43 279
原创 2.3 QLayout一探究竟(上)
Qt文档中是这样介绍的,简单讲QSpaceItem在布局中相当于一块空白区域(或者说是一个占位符),比如不同控件之间设置不同的的间距,或者类似上文中的标题栏控件,需要将标题栏文字和关闭按钮左右分隔开来,这个时候就需要用到QSpaceItem进行填充。正常情况下,我们应该很少在程序中直接创建QSpaceItem对象来使用,因为布局管理器给我们提供了很多接口来解决上述问题,比如下方表格中就是QBoxLayout和QGridLayout布局管理器提供的几种方式隐式地创建了QSpaceItem来占据一定的空间。
2023-07-19 21:46:26 1077
原创 2.1-2.2 Qt布局简介及四大布局的使用
Qt提供了丰富的控件用于PC端的图形界面开发,而今天讲述的是Qt界面框架中的布局,主要用于排列控件的位置。我们在刚开始使用Qt的过程中,可能并不知道QLayout到底是个什么东西,有什么作用。作为新手,无论是刚开始看书,还是直接在网上查资料学习,在最初使用过程中基本都是使用Qt Designer这个工具通过拖拽控件的方式搞出一个大致的界面来。
2023-07-17 09:42:13 354
原创 1.2.3 如何自己模拟发送事件消息
下方代码中使用sendEvent方法模拟鼠标左键按下事件,特别提一点,在这种方式下我们模拟创建的事件对象,Qt是不会帮我们自动回收的,如果是new出来的需要我们自己delete,所以更建议使用临时变量的方式创建事件对象(创建在栈上的对象出函数之后,也就是生命周期结束自动销毁),同时也是因为sendEvent这种方式是立马执行,且是阻塞的,所以执行完之后不需要再使用此事件对象。因为这个方式是将事件立马抛出并下发下去,所以会响应相关事件函数的调用,且需要等该事件处理完毕之后再返回,是阻塞性的。
2023-07-10 09:18:20 292
原创 1.2.1 Qt中事件是如何进行传递——实例篇(下)
建议大家使用示例代码自己再改一改测试一下其他的事件,或者再结合一些实例去解决一些问题,我们在了解到Qt事件的传递机制之后,这样更方便我们在实际应用中想到在哪个流程去更准确地过滤或者去处理一些相应的事件,而不会影响其他控件接收事件,或者继续传递等问题。关于事件过滤器,这里我们新建了一个专门的事件过滤器类来进行验证,也可以自己重写自己本身的事件过滤器然后给自己安装上,这样就是自己监测自己了,本篇主要验证事件的传递流程,事件过滤器在下篇文章中再详细说明。,就有了图三的编译器中打印的信息。
2023-07-04 08:58:23 638
原创 1.2.1 Qt中事件是如何进行传递——叙述篇(上)
建议大家使用示例代码自己再改一改测试一下其他的事件,或者再结合一些实例去解决一些问题,我们在了解到Qt事件的传递机制之后,这样更方便我们在实际应用中想到在哪个流程去更准确地过滤或者去处理一些相应的事件,而不会影响其他控件接收事件,或者继续传递等问题。关于事件过滤器,这里我们新建了一个专门的事件过滤器类来进行验证,也可以自己重写自己本身的事件过滤器然后给自己安装上,这样就是自己监测自己了,本篇主要验证事件的传递流程,事件过滤器在下篇文章中再详细说明。,就有了图三的编译器中打印的信息。
2023-06-27 23:07:48 1070 2
原创 1.1.4 Qt信号槽之再谈Qt4与Qt5中信号槽使用的差异
通过上面的示例和分析,我们已经明显感受到Qt4和Qt5中connect的不同之处,但是Qt文档中有一篇文章专门叙述了Qt4和Qt5中connect的差异,这里根据此篇文章带着大家再深入了解拓展一下。从Qt5开始,Qt提供了两种不同方法的信号槽连接方式,一种是基于字符型,一种是基于函数式,其实也就是我们上方提到的Qt4和Qt5的不同写法,Qt4中connect的信号和槽函数的参数类型为*,而Qt5中connect的信号和槽函数的参数类型为(指向成员函数的指针)。下方是Qt文章中整理的四个不同点。
2023-06-27 14:20:15 1218
原创 1.1.1 Qt信号槽之connect与disconnect介绍
首先我们要知道,如果想要使用Qt中的信号槽机制, 那么必须继承,因为QObject类中包含了信号槽的一系列操作,今天我们来讲解的是connect的应用。
2023-06-26 15:26:11 4601
原创 1.2.2 Qt中的事件过滤器(eventFilter)详解
1.2.1 Qt中事件是如何进行传递1.2.2 Qt中的事件过滤器(eventFilter)1.2.3 如何自己模拟发送事件消息一、Qt中事件过滤器详解我们先看下另外两个相关的方法,一个是给对象安装某个事件过滤器,一个是移除对应的事件过滤器。void QObject::installEventFilter(QObject *filterObj)void QObject::removeEventFilter(QObject *obj)下方代码使用 installEventFilter方法 给
2022-05-17 16:50:13 17583
原创 1.1.5 Qt信号槽之槽函数中获取发送信号对象——sender()
QObject::sender()我们如何在槽函数中获取到信号的发送对象呢,使用sender()方法即可获取。但是使用此方法我们需要注意几点:QObject *QObject::sender() const1、使用sender()方法获取信号的发送对象,前提是槽函数是被信号触发的,而非自己调用,否则返回空(nullptr),所以我们在使用的时候最好加个非空判断;2、通过此方法获取的对象指针仅在槽函数执行的期间有效;3、如果在此期间,信号发送对象被销毁,或者信号与槽函数已经断开,此对象指针将无效
2022-04-19 18:09:12 11746 2
原创 1.1.6 Qt信号槽之如何阻塞信号的触发
简述在之前的文章中我们使用connect来连接信号与槽函数,使用disconnec来断开信号与槽函数的连接。今天介绍的方法是如何阻碍当前对象的信号触发,有两种方法,下面一一道来。1、blockSignals() / signalsBlocked阻碍当前对象的信号触发效果bool QObject::blockSignals(bool block)If block is true, signals emitted by this object are blocked (i.e., emitting
2022-04-19 18:01:59 2721 1
原创 1.1.2 Qt信号槽之ConnectionType参数详解
Qt提供了Qt::ConnectionType类型的枚举来控制信号槽连接的类型,根据connect方法中该类型的值来确定连接类型,其主要区别是决定信号触发的时候槽函数是立即执行还是延迟执行。下面详细讲解这几种类型:ConstantValueDescriptionQt::AutoConnection0(Default) If the receiver lives in the thread that emits the signal, Qt::DirectConnection is
2022-04-18 14:21:06 1141 1
原创 Qt之突发感悟
简述在训练营的上篇文章中讲述了Qt中connect 和 disconnect的用法,我们看到不管是connect还是disconnect,Qt都提供了多种重载的方法,其中分别有Qt4和Qt5对应的版本,我们从中也感受到了不同,因为兼容性,Qt4的很多写法一直沿用至今,也仍然有很多人在用,因为很多人接触的项目中或者平常学习中会经常看到Qt4的信号槽连接方法,所以完全抛弃Qt4目前是不可能的了,因为至今你没有办法将所有项目中关于Qt4的一些东西进行抹除,Qt的开发人员也意识到这个问题,所以Qt4的很多方法和特
2022-04-06 18:05:17 1393 6
原创 1.1.3 Qt信号槽连接不上的原因分析
Qt中的信号槽简介Qt中的信号和槽是用于本对象或者对象与对象之间的通信、参数传递。信号和槽不是标准的C++代码,这些代码需要使用Qt的moc来进行重新编译,而moc全称是 Meta-Object Compiler,也就是"元对象编译器",这里对其原理暂不进行深究,到后面章节再详细分析说明。[static] QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject
2022-03-31 11:11:31 5061
原创 Qt之布局设置setLayout详解(上)
一、简述大家好,我是前行中的小猪,今天给大家讲解的布局的相关用法分析以及如何对控件进行重布局,先从助手文档带大家了解一下用法,然后再通过类似视频监控分屏切换的示例给大家简单分析一下,在一个控件中通过菜单切换实现不同的布局,我们先看一下效果。效果图1:一般视频监控这种场景会连接多颗摄像头去进行监控,这个时候就需要多屏操作,一般情况会连接多个显示器,但是奈何像学校,商场,小区需要几十上百个摄像头进行对整片区域的监控,这不是靠几个屏幕能看的过来的,这个时候就需要进行分区显示,比如一个屏幕显示单个、4个、6
2022-03-16 21:45:52 11684 1
原创 QTreeWidget隐藏节点的两种方式
简述关于QTreeWidget隐藏节点有两种方式,一种是直接隐藏,一种是间接隐藏,但是两种方式各有差异,下面请听具体解说。方法一:直接隐藏式Qt助手里面提供了QTreeWidgetItem::setHidden方法,我们可以调用setHide(false)直接隐藏当前item。但是调用此方法会隐藏该节点下面的所有子节点。图 1-1:我们通过图1-2看到,调用此方法会将自己所有的孩子节点都给隐藏了,如果有这种需求的直接调用此方法即可。效果图 1-2:方法二:间接隐藏式此种方法间接地去把
2022-03-14 20:26:01 6043
原创 Qt小动画之实现控件上下移动
一、简述2020已经过去,迎来了2021,时间过的真快呀,好久没有在csdn上写博客了,也没有再给大家分享更多好玩有趣的Code,那么今天就给大家分享一个之前写的一个小动画示例。二、代码之路下图是实现效果图,主要思路是使用两个动画对象,操作上下需要移动的控件即可。MoveWidget::MoveWidget(QWidget *parent) : QWidget(parent) , m_currentWidget(nullptr){ initMenu(); initAnimation();
2021-01-04 01:24:53 3686 1
Qt 之 自定义提示信息框—QQ、迅雷风格
2016-12-20
Qt 之 模仿迅雷 新建任务界面 根据Url获取文件信息 exe
2016-12-13
Qt 之 模仿迅雷 新建任务界面 根据Url获取文件信息
2016-12-13
Qt 实现 自定义窗口标题栏
2016-12-07
Qt 之 自定义窗口的标题栏
2016-12-07
Qt 之 自定义窗口标题栏
2016-12-07
C++ 实现 ping 功能&& 域名(URL)解析实际 IP地址
2016-11-01
wav格式音频文件
2016-10-12
Qt之实现录音播放及raw(pcm)转wav格式
2016-10-10
Qt 之 HTTP 请求下载(支持断点续传)
2016-09-29
Qt 之实现 QQ系统表情窗口
2016-09-07
Qt 实现 QQ系统表情窗口
2016-09-07
Qt 控件右击菜单翻译
2016-08-29
Qt 之 QLabel 设置面罩
2016-08-02
Qt动画类实例一
2017-11-28
Qt动画之鼠标点击水滴效果
2017-10-27
如何使QGraphicsItem不随QGraphicsView放大缩小而改变大小
2017-08-10
模仿QQ登录窗口(Qt实例)
2017-07-20
Qt截图小实例
2017-07-03
Windows 剪切板的应用,复制浏览器or本地目录图片
2017-03-08
ActiveX插件的使用小实例
2017-02-27
Google Breakpad 使用实例
2017-02-23
GoogleBreakpad捕获崩溃文件需要的文件,包括lib库文件及头文件
2017-02-23
google_breakpad 源码
2017-02-21
Qt 之 简单截图功能(三)实现可拖拽选中区域
2017-01-22
CDB 调试器
2017-01-17
Qt 之 实现简单截图功能(二)
2017-01-09
Qt 之 实现简单截图功能(一)
2017-01-09
Qt 之 模仿 QQ登陆界面下载
2016-12-22
QQ 登录界面 各个控件图片资源
2016-12-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人