Qt结构简介
Qt构成
Qt(/ˈkjuːt/,发音同“cute”)是一个跨平台的C++应用程序开发框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,例如控制台工具和服务器。-摘自维基百科
Qt可以在多个平台编译运行,包括Windows、Linux、Mac OS,其运行时的表现取决于操作系统的UI风格。其跨平台的特性使得Qt可以应用于各种各样的应用场景,包括嵌入式Linux图形化应用的编写。
经过许多年的沉淀,Qt在集成了许多功能组件,这使得Qt几乎可以视为一门独立的语言。不仅在图形化组件方面,在文件IO,网络编程,多线程,数据库访问,多媒体处理等方面,Qt都提供了相应比较易用的接口。
比如在在标准库中的std::string
,其内部仍为字符数组。而在Qt中,QString
则提供了类似的功能,但更加面向对象,并且支持多种编码格式,而且集成了许多常用的数据结构和算法,对用户更加友好,几乎所有标准库中的容器在Qt中都有对应的实现,而且更加易用。
而且Qt通过其独特的元对象机制,实现了反射机制,因此可以在运行时获取对象的各种信息如对象名等,为后续Qt的信号与槽机制提供支持。
编写Qt
我现在是使用VScode + cmake实现Qt的编写,环境配置可以参考这里。
在cmake中导入了Qt::Core以及Qt::Widgets这两个组件来进行图形化界面的编写。
接下来写一份Qt编程的"Hello World"程序。
#include <QApplication> #include <QMainWindow> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个应用对象 QMainWindow win; // 创建一个窗口 win.show(); // 显示窗口 return app.exec(); // 进入事件循环,等待外部事件触发 }
编译运行,即可看到一个空白的窗口。
解释一下代码
QApplication
类是Qt的核心类,它负责创建和管理应用的生命周期,包括创建窗口、处理事件、提供系统级服务等。QMainWindow
类是Qt的窗口类,它继承自QWidget
类,是所有窗口类的基类。
对于一个Qt程序,需要创建一个QApplication
对象,然后使用app.exec()
函数让整个app进入事件循环,等待外部事件触发。由于QApplication
构造函数需要传入argc和argv参数,所以我们需要在main函数中传入这两个参数。
所谓的事件循环,就是程序运行过程中不断检查是否有事件发生,如果有,则处理事件,否则就休眠等待。举个例子,当你点击鼠标左键时,程序就会接收到一个鼠标事件,我们可以在程序中捕获这个事件并作出相应的响应。当按下键盘上的某个键时,程序也会接收到一个键盘事件,我们可以在程序中捕获这个事件并作出相应的响应。
在main函数中,我们创建了一个QMainWindow
对象,并调用show()
函数显示它。这样,一个空白的窗口就出现了。这里的QMainWindow
类即为Qt中QWidget
的组件之一,可以显示一个窗口,并提供窗口的基本功能。几乎所有的组件都是继承自QWidget
类。这里涉及到Qt的对象机制。
QWidgets
Qt中的组件有很多,比如QLabel
、QPushButton
、QLineEdit
、QComboBox
、QListWidget
等等。这些组件都继承自QWidget
类,因此具有相同的基本功能。
通过一些接口如setText()
、setGeometry()
等,我们可以设置组件的各种属性,如文本、位置、大小等。而且通过类继承,允许用户通过已有的组件组合成新的组件,实现更复杂的功能。
本文作者:凪风sama
本文链接:https://www.cnblogs.com/CrescentWind/p/18624946
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步