- 博客(195)
- 收藏
- 关注
原创 Qt基础:数据容器类
是一个动态数组容器类,用于存储和管理相同类型的元素。它提供了快速随机访问、动态扩展和丰富的操作方法,是Qt中最常用的容器类之一。如果需要频繁在中间插入/删除元素,可考虑使用。如果需要键值对存储,可使用。C++11范围for循环。
2025-05-24 17:29:15
469
原创 Qt功能区:Ribbon控件
实现功能:设置程序窗口的样式RibbonThemeOffice2013, ///< office2013主题RibbonThemeOffice2016Blue, ///< office2016-蓝色主题RibbonThemeOffice2021Blue, ///< office2021-蓝色主题RibbonThemeWindows7, ///< win7主题RibbonThemeDark, ///< 暗色主题SARibbonComboBox直接继承于QComboBox,并没有添加什么函数。
2025-05-21 19:18:07
745
原创 Qt文件:XML文件
XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,具有平台无关性、结构清晰等特点。XML文件通常包含XML声明、文档类型定义(DTD)、根元素、元素、属性和文本内容。XML文件必须严格遵循格式规则,如区分大小写、正确闭合标签、唯一根元素、正确嵌套标签等。与HTML不同,XML主要用于数据存储和传输,而HTML用于网页展示。在Qt中,XML文件可以通过DOM方式(QDomDocument)或SAX方式(QXmlStreamReader/QXmlStreamWriter)进行操作。DOM方式适合处理小
2025-05-20 15:08:37
1508
原创 Qt动态生成 UI
本文介绍了在Qt框架中动态生成UI的相关技术,主要包括窗口样式的创建和UI对象的获取。在窗口样式创建部分,详细说明了如何使用Qt::WindowType枚举类型来定义窗口的行为和外观,包括窗口类型标识、窗口提示标志和特殊行为标志,并提供了代码示例展示如何在窗口构造时设置标志以及如何动态修改窗口标志。在获取UI对象部分,介绍了通过objectName获取控件的方法,包括使用QObject::findChild()和QObject::findChildren()进行单个或批量查找,以及通过QApplicatio
2025-05-20 11:30:18
468
原创 Qt功能区:Ribbon框架
Ribbon是一种将菜单栏和工具栏合并的界面设计,通过标签页(Category)和面板(Pannel)组织功能按钮。SARibbon库参考了MFC Ribbon的命名风格,支持上下文标签(Context Category)、应用按钮(Application Button)、快速响应栏(Quick Access Bar)和预览控件(Gallery)等功能。在Qt中使用SARibbon时,可以通过动态库安装和配置,将主窗口的父类替换为SARibbonMainWindow,并在QWidget中嵌入SARibbon
2025-05-16 17:51:15
1335
原创 Qt控件:点击控件
QAction 是 Qt 框架中的核心类,用于表示应用程序中的操作,如菜单项、工具栏按钮或快捷键触发的功能。它将操作的逻辑与 UI 表现分离,支持统一操作逻辑、状态管理、图标与文本设置,并通过信号与槽机制触发操作。QAction 可关联到 QPushButton 和 QToolButton 等控件,实现动作的复用和状态同步。QComboBox 是 Qt 中的下拉列表框控件,允许用户从预定义选项中选择或输入自定义内容,支持只读和可编辑模式,并通过信号捕获选项变化。两者在 Qt 中分别用于抽象操作和选择功能,提
2025-05-16 15:13:27
552
原创 Qt功能区:简介与安装
Qt 官方不支持 Ribbon 风格的 UI,但市面上存在多个开源和商用的 Ribbon for Qt 项目,如 QtitanRibbon、SARibbon 等。SARibbon 是一款轻量级的 Ribbon 控件,适用于大型、复杂软件的 UI 设计,支持多种主题风格和布局样式,并提供了丰富的功能,如最小化模式、快速访问栏、Gallery 控件等。SARibbon 的编译与安装可通过 CMake 或 Visual Studio 完成,生成静态库或动态库后即可在项目中使用。SARibbon 的设计参考了微软
2025-05-14 16:44:37
975
原创 6、CMake基础:流程控制
在 CMake 的 CMakeLists.txt 中也可以进行流程控制,也就是说可以像写 shell 脚本那样进行条件判断和循环。
2025-05-07 19:14:30
621
原创 5、CMake基础:嵌套的CMake
如果项目很大,或者项目中有很多的源码目录,在通过CMake管理项目的时候如果只使用一个CMakeLists.txt,那么这个文件相对会比较复杂,有一种化繁为简的方式就是给每个源码目录都添加一个CMakeLists.txt文件(头文件目录不需要),这样每个文件都不会太复杂,而且更灵活,更容易维护。嵌套的 CMake 也是一个树状结构,最顶层的 CMakeLists.txt 是根节点,其次都是子节点。在实际的软件开发中,这种情况很常见,当一个动态库需要使用其他动态库提供的功能时,就会进行动态库之间的链接。
2025-04-29 16:09:50
1051
原创 4、CMake基础:日志、变量操作和宏定义
本文介绍了CMake中的日志输出、变量操作和宏定义功能。在日志输出部分,详细说明了message命令的使用方法及其不同级别(如STATUS、WARNING、FATAL_ERROR等)的应用场景。在变量操作部分,重点讲解了字符串的追加和移除操作,分别通过set和list命令实现,并提供了相关示例代码。此外,还介绍了list命令的其他功能,如获取列表长度、查找元素、排序等。在宏定义部分,说明了如何在CMake中通过add_definitions命令定义宏,以及如何在编译时通过-D参数定义宏。这些功能为CMake
2025-04-29 14:32:39
840
原创 3、CMake语法:制作和使用动态库和静态库
通常情况下,发布动态库时,.dll 文件是必须的,而.lib 文件和.pdb 文件是否一同发布,取决于具体需求。如果希望其他开发人员在链接时使用该动态库,就需要提供导入库.lib 文件;.pdb 文件主要用于开发和调试阶段,一般在发布给最终用户的产品中不会包含,但在内部测试或给开发人员使用时可能会提供。动态链接库是更推荐的方式,因为它允许更精确的控制和管理链接库的依赖,特别是在大型项目中,它能够避免全局设置可能带来的问题。
2025-04-28 22:51:43
920
原创 2、CMake语法:变量设置、文件包含、路径查找和注释
CMake是一个跨平台的构建工具,支持大写、小写和混合大小写的命令。CMake使用#进行行注释,#[[ ]]进行块注释。通过set命令可以定义变量,变量值可以是字符串。CMake还支持指定C++标准,可以通过set(CMAKE_CXX_STANDARD 11)或在执行cmake命令时通过-DCMAKE_CXX_STANDARD=11来指定。CMAKE_CXX_STANDARD_REQUIRED用于强制要求指定的C++标准,CMAKE_CXX_EXTENSIONS用于控制是否允许非标准扩展。通过EXECUTA
2025-04-27 18:52:12
1075
原创 1、CMake:安装与使用
CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。
2025-04-27 16:35:26
778
原创 类的对象关键字
本文介绍了C++中的几个关键关键字及其用法。explicit用于防止构造函数进行隐式类型转换,提高代码可读性和安全性。override用于明确表示派生类中重写基类的虚函数,增强代码可读性和编译时检查。const用于修饰变量、指针和成员函数,确保其值或对象状态不被修改。static用于修饰类的静态成员变量和函数,使其属于类本身而非特定对象。static_cast用于执行编译器认可的显式类型转换,适用于数值类型、指针或引用的上下行转换以及空指针转换,但需程序员确保转换的安全性。这些关键字在C++编程中具有重要作
2025-04-24 14:55:51
445
原创 全局变量创建与使用
在头文件里声明全局变量,然后在源文件中对其进行定义和初始化。这样做的好处是可以在多个源文件中包含该头文件,从而使用这个全局变量。global.h// 声明全局变量global.cpp// 定义并初始化全局变量main.cpp// 使用全局变量qDebug() << "全局变量的值: " << globalVariable;在global.h头文件中,使用extern关键字声明为全局变量,extern表明该变量在其他地方定义。在global.cpp源文件中,定义并初始化。在。
2025-04-24 10:49:57
336
原创 Qt基础:定时器(开关后速度变快)
在Qt中,定时器开关多次后速度越来越快通常是由于定时器重复启动、定时器事件累积或者资源管理不当等原因造成的。下面为你详细分析可能的原因及对应的解决办法。
2025-04-23 12:45:08
443
原创 Qt控件:QChart使用
QtCharts 可以绘制以下类型的图表:折线图(Line Chart):用于显示数据的趋势和变化,通过连接数据点形成折线。散点图(Scatter Chart):用于展示数据点的分布情况,每个数据点在坐标系中独立显示。柱状图(Bar Chart):用于比较多个类别或数据组之间的数值差异,使用矩形柱子表示。条形图(Horizontal Bar Chart):类似于柱状图,但是柱子是横向排列的。饼图(Pie Chart):用于展示数据占比情况,通过扇形的大小表示不同数据的相对比例。
2025-04-22 22:55:15
1937
原创 程序生成随机数
本文介绍了在Qt、C语言和C++中生成随机数的方法。在Qt中,传统方法使用qsrand()和qrand()函数,但现代Qt推荐使用QRandomGenerator类,它提供了更安全和现代的随机数生成方式。在C语言中,rand()和srand()是常用的随机数生成函数,通常结合当前时间作为种子。C11标准引入了<random.h>库,提供了更高级的随机数生成功能。在C++中,旧方法使用<cstdlib>和<ctime>库,而C++11及以后版本推荐使用<random>库,它提供了多种随机数引擎和分布类型,能够
2025-04-22 15:52:50
693
原创 Qt文件操作
QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;QFileDevice:提供了有关文件操作的通用实现。QFlie:访问本地文件或者嵌入资源;QTemporaryFile:创建和访问本地文件系统的临时文件;QBuffer:读写QbyteArray, 内存文件;QProcess:运行外部程序,处理进程间通讯;QAbstractSocket:所有套接字类的父类;QTcpSocket:TCP协议网络数据传输;
2025-04-18 15:14:44
833
原创 Qt绘图:事件与设备
Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。
2025-04-17 18:36:25
564
原创 Markdown使用
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2025-04-11 10:07:39
1034
原创 Qt控件:容器
Qt中常用的容器控件, 包括: Widget, Frame, Group Box, Scroll Area, Tool Box, Tab Widget, Stacked Widget。
2025-04-11 00:16:06
715
原创 Qt控件:按钮
Qt中常用按钮控件如下图所示,依次为普通按钮、工具按钮、单选按钮、复选按钮、命令链接按钮和对话框按钮组合(包含确定和取消两个按钮)。这些按钮种类虽然繁多, 但是它们都拥有相同的父类 QAbstractButton,这些子类按钮的大部分属性都是从这个基类继承的。
2025-04-09 23:27:48
885
原创 Qt基础:资源文件
虽然资源文件优势很明显,但是它也不是万能的,资源文件中一般添加的都是比较小的资源,比如: 图片,配置文件,MP3 等,如果是类似视频这类比较大的文件就不适合放到资源文件中了。添加前缀/,并将资源文件放在项目文件的下级文件夹中.(一个资源文件中可以添加多个前缀, 前缀就是添加的资源在资源文件中的路径, 前缀根据实际需求制定即可, 路径以 / 开头)在程序编译过程中, 添加到资源文件中的文件也会以二进制的形式被打包到可执行程序中,这样这些资源就永远和可执行程序捆绑到一起了,不会出现加载资源却找不到的问题。
2025-04-03 22:42:43
396
原创 Qt基础:主界面窗口类QMainWindow
QMainWindow是Qt中结构最复杂的标准窗口,包含菜单栏、工具栏、状态栏和停靠窗口等组件。菜单栏位于窗口顶部,工具栏可多个并停靠在窗口四周,状态栏位于底部,停靠窗口可浮动或停靠。菜单项可通过UI或代码添加,工具栏按钮可通过QAction或API添加,状态栏常用于显示信息或添加控件。停靠窗口可自由拖动,主窗口则用于放置核心控件。通过信号槽机制,菜单项和工具栏按钮可触发相应事件,实现功能交互。
2025-04-03 19:03:07
1045
原创 SQLite基础:表操作
OR 运算符始终与 WHERE 子句一起使用,如果两个条件中的任何一个为真,则假定完整条件为真。它是一个连接运算符,它在同一 SQLite 语句中与不同的运算符进行多次比较。SQLite WHERE 子句通常与 SELECT、UPDATE 和 DELETE 语句一起使用,以在您从一个表或多个表中获取数据时指定条件。从“学生”表中选择所有学生,其中年龄大于或等于 25 岁或费用大于或等于 15000.00。从 STUDENT 表中选择学生,其中姓名以“A”开头与“A”之后的内容无关。
2025-04-03 16:10:21
973
原创 Qt基础:时间类
Qt提供了两种定时器工具:QTimer和QElapsedTimer。QTimer用于周期性执行任务或处理超时事件,通过start()启动定时器,timeout()信号触发槽函数。QTimer支持设置时间间隔、精度和单次触发模式。QElapsedTimer则用于高精度计时,提供纳秒级精度,适用于性能测试、超时检测和帧率控制等场景。QElapsedTimer基于平台特定的高精度计时器实现,支持开始、重启、获取耗时和超时检测等功能。两者结合使用,可以满足不同场景下的定时和计时需求。
2025-04-01 11:51:53
508
原创 Qt基础:数据类型
Qt作为C++框架,支持C++的所有数据类型,并定义了自身的数据类型,如QByteArray和QString。QByteArray是char*的升级版,支持动态内存管理和多种字符串操作,如追加、插入、删除、替换、查找和类型转换。QString则使用UTF-8编码,支持多语言字符集,提供类似QByteArray的操作功能。此外,Qt提供了QDebug类用于日志输出,替代了C/C++中的printf和cout,支持多种日志级别输出,如qDebug()、qWarning()、qInfo()和qCritical()
2025-03-31 11:14:55
964
原创 Qt基础:安装与简介
QT是一个跨平台的C++应用程序开发框架。几乎支持所有的平台, 可用于桌面程序开发以及嵌入式开发。Qt是标准 C++ 的扩展, C++的语法在Qt中都是支持的。良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,可以快速上手。Qt 提供了一种称为 signals/slots 的安全类型来替代 callback(回调函数),这使得各个元件 之间的协同工作变得十分简单。Qt 基本模块(Qt Essentials):提供了 Qt 在所有平台上的基本功能。
2025-03-28 18:56:46
875
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人