
编程系列-QT
文章平均质量分 86
QT知识与经验分享
文火冰糖的硅基工坊
行路当下,惜缘随缘;
仰望星空,梦在远方;
俯瞰天下,顺道而为;
点亮心灯,照亮周遭。
----贝尔实验室授予杰出技术专家DMTS终身荣誉
展开
-
[QT编程系列-45]: 内存检测工具Dr.Memory在Windows上的使用实践与详解
Dr.Memory是一种内存监视工具,能够识别与内存相关的编程错误,例如:(1).访问未初始化的内存;(2).访问不可寻址(unaddressable)的内存(heap underflow and overflow);(3).访问释放的内存;(5).内存泄漏;(6).Windows上的:句柄泄漏(handle leaks)、GDI API使用错误;(7).对未保留的线程本地存储槽的访问.原创 2023-10-04 18:39:07 · 4573 阅读 · 3 评论 -
[QT编程系列-44]: Windows + QT软件闪退的检测方法
Windows事件查看器(Event Viewer)是Windows操作系统中的一个内置工具,用于查看和分析系统和应用程序生成的事件日志。它记录了系统的各种事件和错误,以帮助诊断和解决问题。应用程序日志:记录了应用程序和服务生成的事件,如应用程序错误、警告和其他相关信息。安全日志:记录了与Windows安全相关的事件,如用户登录、访问权限、安全策略等。系统日志:记录了与操作系统本身相关的事件,如系统错误、驱动程序问题和其他系统级事件。原创 2023-10-04 00:10:37 · 4232 阅读 · 0 评论 -
[QT编程系列-43]: Windows + QT软件内存泄露的检测方法
在QT程序中,您可以使用一些工具和技术来查找和分析内存泄漏问题。QT提供了内置的内存调试工具,其中包括Qt的调试分析工具(如qdebug、qmlprofiler等)。这些工具可以帮助您检测和分析内存泄漏问题。通过设置适当的宏,在程序运行时会显示内存分配和释放的相关信息。除了QT的内置工具,您还可以使用一些第三方工具来检测内存泄漏,例如Valgrind、AddressSanitizer等。这些工具可以帮助您检测未释放的内存、内存越界访问等问题,并提供详细的报告。原创 2023-10-03 23:32:00 · 9246 阅读 · 0 评论 -
[QT编程系列-42]: QT定时器
timeSetEvent和QTimer是两个不同的定时器机制,分别对应于Windows平台的原生API和Qt框架中的定时器类。timeSetEvent是Windows API提供的函数,用于设置定时器事件。它可以在指定的时间间隔内定期调用一个回调函数。timeSetEvent需要手动设置参数,包括延迟时间、事件分辨率、回调函数等。timeSetEvent是使用C/C++编程语言进行调用和使用。QTimer是Qt框架提供的定时器类,封装了定时器的常用操作。原创 2023-08-11 20:59:19 · 6052 阅读 · 0 评论 -
[QT编程系列-41]:Qt QML与Qt widget 深入比较,快速了解它们的区别和应用场合
Widgets更适合传统的桌面应用程序开发,对于较复杂的界面和交互需求,以及对细粒度控制更重要的场景,Widgets可能更有优势。综上所述,在选择QML和Widgets之间的Qt技术时,需要综合考虑项目需求、开发团队技能和经验、设计工作流程、跨平台需求和性能要求等因素。同时,QML组件的复用性也更好,可以通过不同的组件和模块来构建和组合复杂的界面。- 有的时候不禁要问,既生widget何生qml,学习成本和选择又多了,其实这正是和这个世界的哲学一样:世界是简单的又是复杂的。为了适应各种需求和满足需要。原创 2023-08-09 07:43:49 · 12939 阅读 · 0 评论 -
[QT编程系列-40]:QML语言简介
QML(Qt Meta-Object Language)是Qt框架中用于构建用户界面的声明性语言。它是一个轻量级的语言,用于描述界面的结构和行为,使开发人员能够快速构建跨平台的界面。QML可以与C++代码无缝集成,同时支持动态创建和组合不同的QML组件。QML使用声明式语法来描述界面。开发人员可以简洁地定义用户界面组件、布局和交互逻辑,而无需编写繁琐的代码。QML提供了一组丰富的组件,如Rectangle、Text、Image等,开发人员可以使用这些组件构建用户界面。原创 2023-08-05 13:43:38 · 564 阅读 · 0 评论 -
[QT编程系列-39]:用户界面UI - 样式表QSS与样式文件快速入门
Qt提供了一种称为Qt样式表(Qt Style Sheets)的机制,可以用于自定义和美化Qt应用程序的用户界面(UI)。使用Qt样式表,你可以通过类似CSS的语法来定义UI元素的外观和布局,包括颜色、字体、边框、背景等。以下是一些常用的Qt样式表属性和用法用于选择要应用样式的UI元素,可以使用对象名(object name)或类名(class name)作为选择器,也可以使用通配符和层级选择器。color: red;// 应用到所有QPushButton类型的按钮。原创 2023-08-05 13:42:52 · 3317 阅读 · 0 评论 -
[QT编程系列-38]:数据存储 - SQLite数据库存储与操作
QT 提供了对 SQLite 数据库的支持,通过 QT 的相关类和方法,可以方便地进行SQLite数据库的连接、查询和操作。1.2 SQLite不支持网络连接SQLite 是一种嵌入式数据库引擎,通常用于本地应用程序中,它被设计为本地文件数据库并不直接提供网络连接功能。因此,SQLite 本身不支持直接通过网络连接到数据库。然而,可以通过其他方法实现通过网络连接到 SQLite 数据库的功能。原创 2023-08-03 20:16:26 · 4174 阅读 · 0 评论 -
[QT编程系列-37]:数据存储 - 日志文件、日志等级的支持:qDebug、Log4Qt
在 Qt 中,日志文件的支持通常是通过日志库、日志框架或自定义代码实现的。Qt 本身没有提供内置的日志文件支持。你可以集成一些第三方的日志库(例如 spdlog、Log4Qt、QsLog 等)来管理和记录应用程序的日志。这些库提供了丰富的功能和配置选项,可以方便地将日志输出到文件。//这是最值得推荐的方法你可以在代码中添加自定义的日志输出语句,并将日志消息写入文件。这可以通过使用 QFile 或其他文件写入类来实现。你可以根据需要定义日志级别、格式和输出位置。原创 2023-08-03 20:15:57 · 1649 阅读 · 0 评论 -
[QT编程系列-36]:数据存储 - 配置数据的存储方式种类:QSettings 、QSQLite 、QJSON
在Qt中,你可以使用多种方式来保存和管理配置数据。配置数据的用途:(1)应用程序重启后配置数据的保存(2)不用应用程序之间交换配置数据(3)应用程序内部不同对象之间交换配置数据QSettings 是一个方便的方式,用于读取和写入应用程序的配置数据。它可以将配置数据保存在操作系统的注册表(Windows)、配置文件(Unix-like),或者内存中。这是一个跨平台的解决方案,可以方便地保存和检索应用程序的配置设置。// 写入配置数据// 读取配置数据。原创 2023-08-01 23:08:55 · 2117 阅读 · 0 评论 -
[QT编程系列-35]:数据存储 - JSON格式配置数据的存储与通知
这些 JSON 示例展示了不同的数据结构,包括简单对象、嵌套对象、数组,以及各种数据类型,例如字符串、数值、布尔值和空值。通过读取和解析这个 JSON 配置文件,应用程序可以获取和使用配置信息来设定其行为和设置。JSON 文本可以被解析和生成以在不同的编程语言和平台之间传输和处理数据。使用 QJsonObject,你可以创建、操作和访问 JSON 对象中的键值对数据。QJsonDocument 还提供了其他一些有用的方法,例如设置和获取文档的元数据,合并多个 JSON 文档等。原创 2023-08-01 23:08:10 · 1322 阅读 · 0 评论 -
[QT编程系列-34]:科学计算 - QT对python语言和python库的支持, C++与python混合编程
Qt对Python的支持主要通过两个库来实现:PyQt和PySide。PyQt:PyQt是由Riverbank Computing开发的Qt的Python绑定库,它提供了完整的Qt框架的Python接口。PyQt有两个版本:PyQt4和PyQt5。PyQt5是基于Qt5的最新版本,而PyQt4则与旧版本的Qt兼容。PyQt提供了对Qt的核心模块、GUI组件、数据库访问、网络通信等功能的全面访问。原创 2023-07-29 07:47:32 · 933 阅读 · 0 评论 -
[QT编程系列-33]:科学计算 - 开源数值计算库GNU Scientific Library(简称GSL)
GNU Scientific Library(简称GSL)是一个开源数值计算库,旨在提供各种数学和科学计算的功能。它用于解决数学、物理、工程和计算科学中的复杂问题,并提供了一组丰富的功能和算法。以下是一些关于GNU Scientific Library的重要信息:功能广泛:GSL提供了许多数学和科学计算的功能,包括线性代数、解析函数、常微分方程、多项式、优化、统计分析、特殊函数等。它还包含一些特定领域的专用模块,如傅里叶变换、数值积分和随机数生成。原创 2023-07-24 00:08:18 · 3829 阅读 · 0 评论 -
[QT编程系列-32]:科学计算 - QT支持的科学计算库
如果你需要更高级的数学库和功能,可以考虑使用第三方数学库,比如Eigen、GSL、Ceres Solver等,将它们与Qt应用程序集成使用。在集成第三方库时,请注意库的许可证和使用条款,并按照库的文档和示例进行正确的安装和配置。此外,如果需要更复杂的数学计算,你可能需要使用第三方数学库,如Eigen、GSL、Ceres Solver等,并将其与Qt应用程序集成使用。Qt自身并没有提供专门的数学运算库,但它提供了一些基本的数学函数和数据结构,可以进行常见的数值计算和数学操作。原创 2023-07-22 23:55:44 · 1822 阅读 · 0 评论 -
[QT编程系列-31]:多线程机制 - Qthread工作原理
总体上,QThread通过封装底层的线程管理和事件循环机制,提供了一种方便的方式来管理线程的创建、启动和停止,并提供了线程间通信的能力。总结而言,Qt不建议改写QThread的run函数,因为run函数不会在新创建的线程中执行,并且会影响线程的事件循环机制。也就是说,run函数并不是QThread线程的主函数,而是QThread连接应用程序的接口,因此,run还是不能是死循环,否则,QThread线程的主函数就会在调用run函数后备阻塞!在run()函数中,我们执行了一些模拟的耗时任务,每个任务耗时1秒。原创 2023-07-21 23:13:13 · 5837 阅读 · 4 评论 -
[QT编程系列-30]: 多进程机制 - QT Socket通信:QTcpSocket、QUdpSocket
在Qt中,通过套接字(socket)实现网络通信主要使用的是QTcpSocket和QUdpSocket类。QTcpSocket用于基于TCP协议的通信,而QUdpSocket用于基于UDP协议的通信。在Qt中,使用TCP/IP协议进行网络通信可以使用QTcpSocket和QTcpServer类。QTcpServer用于创建服务器,监听连接请求并接受客户端连接,而QTcpSocket用于创建客户端,并与服务器建立连接。原创 2023-07-20 23:16:54 · 2531 阅读 · 0 评论 -
[QT编程系列-27]:多线程机制 - 信号与槽实现不同对象之间通信的五种情形:线程内同步通信、线程内异步通信、线程间异步通信
直接连接,当SenderObject对象发射sendMessage信号时,信号首先被缓存到线程的信号队列,并直接返回,ReceiverObject对象的onMessageReceived槽函数将被线程的信号队里查询函数调用,并传递相应的参数,因此会出现异步延时!总而言之,线程的信号队列是Qt中跨线程异步通信的机制,它通过将信号封装为事件对象,将事件放入目标线程的信号队列中,并在目标线程的事件循环中处理,实现了线程间的安全通信。接收者线程的事件循环:目标线程中需要运行事件循环,才能及时处理信号队列中的事件。原创 2023-07-19 22:53:24 · 3655 阅读 · 0 评论 -
[QT编程系列-26]:多线程机制 - QT线程间通信与线程的事件队列event queue、QueuedConnection
可以使用压缩算法进行数据压缩,或使用规则或过滤器对数据进行筛选,只选择需要的数据进行传输或处理。通过将待发送的数据分配给线程池中的空闲线程,可以平衡工作负载,并确保发送数据的速率得到控制。通过以上方法,可以解决发送数据线程和接收数据线程之间的不平衡问题,确保数据能够按时传送和处理。同时,由于Qt的信号和槽机制是基于事件循环的,因此在使用线程进行数据传递时,可能需要处理事件循环以便及时响应和处理信号槽连接。需要注意的是,信号和槽机制可以跨越线程边界,在不同的线程之间进行通信。原创 2023-07-19 22:50:23 · 3621 阅读 · 0 评论 -
[QT编程系列-24]:多线程机制 - QT的数据通信机制
它可以在不同的进程、设备或网络中的Qt应用程序之间实现数据和信号的交换。使用Qt Remote Objects,你可以定义和使用分布式对象,通过远程调用和信号槽机制进行数据通信。以上仅是一些常用的Qt数据通信方式,Qt还提供了其他更多的通信工具和机制,如QtDBus用于D-Bus数据交互、QtWebSockets用于WebSocket通信等,你可以根据具体需求选择合适的通信方式,具体的选择取决于你的应用需求以及数据通信的特点。信号和槽机制:Qt的信号和槽机制是一种基于事件的机制,用于在对象之间进行通信。原创 2023-07-18 23:10:12 · 1487 阅读 · 0 评论 -
[QT编程系列-23]: 多进程机制 - 启动和管理其他进程
请注意,启动其他进程可能涉及到系统安全和权限问题,因此在实际开发中,请确保对执行的外部程序进行适当的验证和权限控制。请注意,启动其他进程可能涉及到系统安全和权限问题,因此在实际开发中,请确保对执行的外部程序进行适当的验证和权限控制。方法获取进程的输出,将其存储在字节数组中,并进行输出或进一步处理。方法获取进程的输出,将其存储在字节数组中,并进行输出或进一步处理。创建了一个新的进程对象,设置要执行的程序(例如。创建了一个新的进程对象,设置要执行的程序(例如。这只是一个简单的示例,你可以根据实际需求使用。原创 2023-07-18 23:07:50 · 1323 阅读 · 0 评论 -
[QT编程系列-21]:基本框架 - QT常见数据结构:QString、QList、QVector、QMap、QHash、QSet、QPair详解
QPair提供了一种简便的方式来保存两个不同类型的值,并进行直接访问和操作。它提供了高效的基于键的查找和插入操作,并使用哈希函数来散列键以提高性能。以上是QList的一些常用操作,它还提供了更多的成员函数和功能,如拷贝构造、深拷贝、元素访问等。以上是QString的一些常用操作,它提供了很多其他方法来操作和处理字符串。它提供了方便的插入、删除和访问操作,并支持迭代器和算法等功能。QVector是Qt中的一个动态数组容器类,用于存储同一数据类型的元素。它提供了高效的查找和插入操作,并保持元素的唯一性。原创 2023-07-17 23:19:55 · 3558 阅读 · 0 评论 -
[QT编程系列-22]:基本框架 - QT常见数据结构:QString、QList、QVector、QMap、QHash、QSet、QPair快览
用于存储和操作字符串的类。QString是Qt中常用的字符串类型,提供了丰富的字符串操作方法和快速的字符串处理能力。QList:动态数组,可用于存储同一数据类型的多个元素。它可以方便地进行插入、删除和访问操作,提供了一系列的成员函数和迭代器来操作元素。和QList类似,也是动态数组,但通常比QList更适合于元素的快速访问和遍历操作。QMap:键值对的容器,用于存储和查找映射关系。提供快速的键值访问和搜索能力,以及对映射的排序和迭代等操作。类似于QMap,是一个存储键值对的容器,但不保证元素的顺序。原创 2023-07-17 23:20:11 · 2692 阅读 · 2 评论 -
[QT编程系列-20]:基本框架 - QT的测试框架QTest
Qt Test是Qt框架中的单元测试框架,它提供了一组用于编写和执行测试用例的工具和类。使用Qt Test可以方便地进行单元测试,并集成到你的Qt应用程序中。下面是一些关于Qt Test的重要概念和用法:测试类:使用QObject派生的类,用于封装一组相关的测试函数。可以使用宏Q_OBJECT和来声明和定义测试类。测试函数:在测试类中定义的公共槽函数,用于执行实际的测试操作。测试函数应该以void返回类型,且没有输入参数。Qt Test提供了一系列的断言宏,用于验证条件和比较结果。原创 2023-07-17 23:12:54 · 6837 阅读 · 0 评论 -
[QT编程系列-19]: 基础框架 - 信号与槽背后的编程思想
通过信号和槽的连接,不同对象之间可以进行交互和通信,实现了对象之间的松耦合和可插拔的设计。信号与槽机制通过解耦发出信号的对象和处理信号的对象之间的依赖关系,实现了对象之间的松耦合。同时,信号与槽机制也是Qt框架在跨平台和事件驱动的应用开发中的关键部分,为开发者提供了丰富的功能和工具。这种机制通过面向对象的设计和实现,促进了可插拔的设计和代码复用,提供了一种高效和灵活的编程模式。如果需要添加新的功能,只需创建一个相应的槽函数并与合适的信号进行连接即可,而无需修改原有的代码。通过信号与槽机制,Qt提供了一种。原创 2023-07-17 23:11:25 · 252 阅读 · 0 评论 -
[QT编程系列-18]: 基础框架 - QT中面向对象的思想体现
事件驱动 (Event-driven):Qt的信号与槽机制以事件驱动的方式工作,即当一个特定的事件(信号)发生时,与之相关联的槽函数将被自动调用。连接一个信号与一个同名的槽函数时,可以在不同的对象上触发不同的操作,实现了多态的灵活性。Qt中,信号与槽(Signals and Slots)是一种基于事件驱动的编程机制,它是Qt框架中的一大特色,也体现了面向对象编程的思想。QObject基类中的信号与槽机制是Qt的核心机制之一,它使得对象之间的松耦合通信变得容易,提供了强大的灵活性和可扩展性。原创 2023-07-17 00:46:51 · 766 阅读 · 0 评论 -
[QT编程系列-29]:多线程机制 - 线程池
(1)需要执行的任务或数据处理是临时性的、执行完就立即空闲,而不是无限制的循环任务(2)需要执行的任务或数据处理是独立的(3)需要执行的任务或数据处理的数量是不确定线程池是一个用于管理和复用多个线程的机制。它由一组预先创建的线程组成,可以在需要时分配任务给这些线程进行执行。原创 2023-07-20 23:16:04 · 3589 阅读 · 0 评论 -
[QT编程系列-17]:基本框架 - 为什么派生对象时,需要加Q_OBJECT宏定义?
它告诉Qt元对象编译器(MOC,Meta-Object Compiler)处理该类,并生成与信号和槽相关的元对象代码。类可以用于创建应用程序的主窗口,并在其中定义菜单、工具栏、状态栏等界面元素以及相关的槽函数,以实现完整的应用程序功能。宏的类时,需要重新运行MOC预处理来更新元对象代码,以确保信号和槽的连接和调用正常工作。的类中,必须使用Qt的元对象编译器工具MOC对该类进行处理,因此在使用。是Qt中提供的一个主窗口类,用于创建应用程序的主界面。关键字,可以定义槽函数,用于响应信号和执行特定的操作。原创 2023-07-16 08:52:14 · 527 阅读 · 0 评论 -
[QT编程系列-16]: 基础框架 - C++语言特性
在 Qt 中,使用 C++ 是主要的编程语言。C++ 是一种通用的、强类型的编程语言,通过与 Qt 框架结合使用,可以轻松构建跨平台的图形用户界面(GUI)应用程序和其他类型的应用程序。以下是 Qt 中使用 C++ 的一些方面和特点:对象导向编程(OOP):C++ 是一种面向对象的编程语言,而 Qt 以面向对象的方式构建。通过使用 C++,开发人员可以利用类、继承、多态等 OOP 概念来组织和管理代码。原创 2023-07-16 08:51:14 · 565 阅读 · 0 评论 -
[QT编程系列-15]: 基础框架 - 信号与槽,connect函数详解
在使用 Qt 框架进行开发时,connect函数是用于建立信号与槽机制的重要函数。它用于在对象之间建立关联,使得一个对象的信号可以触发另一个对象的槽函数。即一个对象发送信号时,就可以直接调用关心此信号的另一个对象的成员函数!!!在 Qt 中,可以使用connect函数来连接信号和槽。在 Qt 中,可以使用connect函数在不同线程之间建立信号与槽的连接,以实现线程间的通信。Qt 的线程间通信是通过将信号传递给跨线程的槽函数来实现的。原创 2023-07-16 08:49:15 · 6762 阅读 · 0 评论 -
[QT编程系列-14]:QT快速学习 - 2 - QT学习方法与步骤
总而言之,Qt 的学习需要坚实的基础知识和不断的实践。同时,保持学习和探索的态度,不断进阶和应用,将帮助你成为一名更熟练的 Qt 开发者。这些主题可以扩展你的 Qt 技能,并使你能够开发更复杂和高级的应用程序。保持学习态度,不断探索新的技术和功能,参与项目和解决实际问题,将有助于提高你的 Qt 开发技能。Qt 的安装包中包含了大量的示例代码,通过运行这些示例代码,可以学习 Qt 的不同功能和用法。除了官方文档外,还可以查找一些优秀的书籍和在线教程,这些资源能够提供更深入的 Qt 学习内容和实例。原创 2023-07-15 10:34:28 · 1084 阅读 · 0 评论 -
[QT编程系列-13]:QT快速学习 - 1- 初识
Qt 和 MFC 都是用于 Windows 平台的框架,用于开发图形用户界面(GUI)应用程序。它们都有各自的特点和适用场景。下面是对 Qt 和 MFC 的比较:跨平台性:Qt 是一个跨平台的框架,支持多种操作系统(如Windows、macOS、Linux、Android、iOS等),可以使用相同的代码构建应用程序的不同版本。强大的功能和工具集:Qt 提供了大量的功能和工具,涵盖了从图形用户界面、网络通信、数据库操作到多媒体处理等各个方面。原创 2023-07-15 10:24:08 · 1215 阅读 · 0 评论 -
[QT编程系列-12]:QT快速学习 - 0 - 主要内容
Qt 数据库编程:掌握使用 Qt 数据库模块进行数据库连接和操作,使用 Qt 提供的 SQL API 进行常见的查询、插入、更新和删除操作。Qt GUI 编程:掌握使用 Qt 的 GUI 模块进行界面开发,了解 Widgets 和布局管理器的使用,实现窗口、对话框、菜单、工具栏等。Qt 核心模块:熟悉 Qt 核心模块的使用,包括对象模型、数据结构、容器类、字符串处理、文件和目录操作、线程处理等。Qt 多线程编程:了解使用 Qt 多线程模块进行多线程编程,包括线程创建、线程和对象间的通信、线程同步和互斥等。原创 2023-07-15 10:09:48 · 896 阅读 · 0 评论 -
[QT编程系列-25]:多线程机制 - QThread和MoveToThread简介
QThread类提供了一个与平台无关的管理线程的方法。在Qt中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,比如大量运算,复制大文件,网络传输等。QT(也称为Qt框架)是一个用于开发跨平台应用程序的C++库。它提供了丰富的功能,包括多线程支持。多线程是一种在同一时间处理多个任务的技术,它可以改善应用程序的响应性和性能。原创 2023-07-18 23:11:20 · 4112 阅读 · 0 评论 -
[QT编程系列-11]:C++图形用户界面编程,QT框架快速入门培训 - 5- QT主要控件与自定义控件
在Qt中,有许多预定义的控件(Widgets)可用于创建用户界面。这些控件提供了各种常见的用户界面元素,例如按钮、文本框、列表框等。以下是一些常见的预定义控件:QPushButton:按钮控件,用于触发操作或事件。QLabel:标签控件,用于显示文本或图像。QLineEdit:单行文本框控件,用于接收用户输入的文本。QTextEdit:多行文本框控件,用于接收和显示多行文本。QRadioButton:单选按钮控件,用于选项的单选。QCheckBox:复选框控件,用于选项的多选。原创 2023-07-14 21:39:18 · 1234 阅读 · 0 评论 -
[QT编程系列-10]:C++图形用户界面编程,QT框架快速入门培训 - 4- QT画图与动画
通过QT的绘图系统,开发者可以轻松创建各种各样的图形用户界面和绘图应用程序,如数据可视化工具、绘图软件、图像编辑器等。通过QPainter的各种绘制函数(如drawLine、drawRect、drawText等)可以在绘图设备(如QWidget、QImage等)上进行绘制操作。QPen:QPen是绘图的画笔,用于设置绘图的线型、颜色、宽度等属性。通过使用这些绘图工件,结合Qt提供的丰富的绘图函数和属性设置函数,可以灵活地创建和操作各种图形图像,并实现自定义的绘图效果。在示例中,设置了红色的画刷(原创 2023-07-14 20:43:02 · 950 阅读 · 0 评论 -
[QT编程系列-9]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自动布局
在QT中,有多种方法可以实现自动布局,包括使用布局管理器、使用样式表和使用网格布局等。,包括QVBoxLayout、QHBoxLayout、QGridLayout和QFormLayout等。在QT中,自动布局是一种灵活而强大的方式来管理和排列界面中的控件。原创 2023-07-14 20:39:47 · 674 阅读 · 0 评论 -
[QT编程系列-8]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自定义对话框
在QT中,对话框是一种常见的用户界面组件,用于与用户进行交互和获取信息。QT提供了许多不同类型的对话框,包括消息框、输入框、文件对话框等。您可以使用这些对话框来显示消息、接收用户输入以及进行文件选择等操作。例如,您可以使用QT的QMessageBox类创建一个简单的消息框,用于显示提示信息或警告信息。// 显示一个简单的提示框QMessageBox::information(nullptr, "提示", "操作成功!");// 显示一个警告框并获取用户的选择。原创 2023-07-13 21:49:42 · 511 阅读 · 0 评论 -
[QT编程系列-7]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自定义工具栏、状态栏、快捷键、图标
在Qt中,ToolBar(工具栏)是一种常见的GUI元素,用于提供应用程序的常用工具按钮和操作。工具栏通常包含一系列图标按钮,用于执行常见的操作或快速访问功能。以下是在Qt中创建和使用工具栏的一般步骤:创建// 创建工具栏对象,this为父窗口或父部件创建工具栏上的QAction* openAction = new QAction(QIcon(":/icons/open.png"), tr("打开"), this);// 创建一个工具按钮动作。原创 2023-07-13 21:47:39 · 1521 阅读 · 0 评论 -
[QT编程系列-6]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自定义菜单栏
在Qt中,Windows窗口和Widget窗口是两种不同的窗口类型,它们在创建方式、功能和用途上有所区别。Windows窗口是通过Qt的QMainWindow类创建的顶级窗口。通常使用Qt Designer进行可视化设计和布局,然后通过代码或信号槽连接进行定制和交互。Widget窗口是通过Qt的QWidget类创建的窗口。Widget窗口可以作为顶级窗口,也可以嵌套在其他窗口中。Windows窗口是用于创建应用程序的主窗口,通常具有常见的窗口功能,如菜单栏、工具栏和状态栏等。它提供了一种常用的。原创 2023-07-13 21:42:45 · 3032 阅读 · 0 评论 -
[QT编程系列-5]:C++图形用户界面编程,QT框架快速入门培训 - 2- QT程序的运行框架:事件(用于与系统的交互)、信号(对象与对象之间的通信)
事件冒泡:如果事件没有被事件过滤器阻止,或者没有安装事件过滤器,事件会进入目标对象的默认事件处理流程。如果目标对象是窗口的子对象,且事件类型支持冒泡(例如键盘事件),则该事件会传递给上一级父对象,并继续进行事件分发和处理。事件处理完结:事件处理链中的最终目标对象或事件过滤器可以选择是否处理该事件,如果事件没有被处理,则会继续传递,并最终返回给操作系统对事件进行处理。事件过滤器对象(Event Filter):事件过滤器是一种辅助对象,它可以插入到事件的传递链中,拦截并处理其他对象的事件。原创 2023-07-12 22:40:54 · 713 阅读 · 0 评论