Qt编程快速入门(1)Qt结构简介

news/2025/3/9 22:44:34/文章来源:https://www.cnblogs.com/CrescentWind/p/18624946

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(); // 进入事件循环,等待外部事件触发
}

编译运行,即可看到一个空白的窗口。

alt text

解释一下代码

  • QApplication类是Qt的核心类,它负责创建和管理应用的生命周期,包括创建窗口、处理事件、提供系统级服务等。
  • QMainWindow类是Qt的窗口类,它继承自QWidget类,是所有窗口类的基类。

对于一个Qt程序,需要创建一个QApplication对象,然后使用app.exec()函数让整个app进入事件循环,等待外部事件触发。由于QApplication构造函数需要传入argc和argv参数,所以我们需要在main函数中传入这两个参数。

所谓的事件循环,就是程序运行过程中不断检查是否有事件发生,如果有,则处理事件,否则就休眠等待。举个例子,当你点击鼠标左键时,程序就会接收到一个鼠标事件,我们可以在程序中捕获这个事件并作出相应的响应。当按下键盘上的某个键时,程序也会接收到一个键盘事件,我们可以在程序中捕获这个事件并作出相应的响应。

在main函数中,我们创建了一个QMainWindow对象,并调用show()函数显示它。这样,一个空白的窗口就出现了。这里的QMainWindow类即为Qt中QWidget的组件之一,可以显示一个窗口,并提供窗口的基本功能。几乎所有的组件都是继承自QWidget类。这里涉及到Qt的对象机制。

QWidgets

Qt中的组件有很多,比如QLabelQPushButtonQLineEditQComboBoxQListWidget等等。这些组件都继承自QWidget类,因此具有相同的基本功能。

通过一些接口如setText()setGeometry()等,我们可以设置组件的各种属性,如文本、位置、大小等。而且通过类继承,允许用户通过已有的组件组合成新的组件,实现更复杂的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/857639.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python网络编程之websocket

服务端:import asyncio import websockets# 保存已连接的客户端列表 connected_clients = set()async def handle_websocket(websocket):# 将新的客户端添加到已连接客户端列表remote_address = websocket.remote_addressconnected_clients.add(websocket)print(f"新的客…

.NET 阻止系统睡眠/息屏

本文介绍Windows系统设备下如何阻止系统睡眠/息屏,以及想看当前阻止睡眠/息屏的应用信息 powercfg /requests查看活动列表 在播放音乐时,我们会发现设置了系统电源管理-自动睡眠,计划不会生效,这个音频播放操作阻止了系统自动睡眠。但不会阻止息屏,所以Windows下一般屏幕关…

python网络编程之http longpull

服务端:from flask import Flask, request, jsonify import timeapp = Flask(__name__)@app.route(/stream, methods=[GET]) def poll():# 假设这里有一个方法来检查是否有新数据# 为了示例,我们简单地模拟等待数据time.sleep(5) # 模拟处理时间或等待数据# 假设这是从某处获…

Python中指数概率分布函数的绘图详解

在数据科学和统计学中,指数分布是一种应用广泛的连续概率分布,通常用于建模独立随机事件发生的时间间隔。通过Python,我们可以方便地计算和绘制指数分布的概率密度函数(PDF)。本文将详细介绍指数分布的原理、应用场景,并提供详细的代码示例,展示如何在Python中绘制指数分…

VScode + cmake编写Qt程序

本机环境 Ubuntu 20.04 Qt 5.12.81. 安装Vscode直接在官网下载对应的deb包安装即 可。下载后在deb包所在目录执行如下命令安装deb包。sudo dpkg -i 安装包名.deb然后在应用程序中应该就有了Vscode的图标了。2. 安装cmake与gcc g++先安装cmakesudo apt-get install cmake然后安装…

RK3588开发板入门教程

一、EVM-RK3588 评估板外观二、常用系统信息查看1、查看系统内核版本信息,使用uname命令:$unamet-a2、查看操作系统信息:$ cat /etc/issue3、查看系统内存使用情况:$free-h4、查看系统磁盘使用情况:$ df -h5、查看磁盘和分区:# 查看所有分区 $ fdisk -l # 查看文件可看到…

【教程】第十章:任务仪表盘(2) —— 各有千秋

通过循序渐进的功能升级,你将打造一个强大的管理系统,让团队协作更高效、流程更智能。在本章中,我们将带您一步步完成任务仪表盘的下一部分,有任何疑问记得随时来论坛咨询。 从复习上章内容开始,让我们一起展开这段探索之旅吧! 10.1 揭晓上一章节答案 10.1.1 状态与链接 …

Llama 3.2 900亿参数视觉多模态大模型本地部署及案例展示

本文介绍了如何在本地部署Llama 3.2 90B(900亿参数)视觉多模态大模型,并开发一些Use Case,展示其强大的视觉理解能力。Llama 3.2 900亿参数视觉多模态大模型本地部署及案例展示 本文将介绍如何在本地部署Llama 3.2 90B(900亿参数)视觉多模态大模型,并开发一些Use Case,…

【新教程】Ubuntu server 24.04配置无线网WiFi

0 相关信息 Ubuntu Server 24.04 1 工具准备 sudo apt install network-manager wpasupplicant wireless-tools2 过程 查看无线网卡名称: ip addr一般wl开头的为无线网卡。比如,我这里的无线网卡就是wlo1 扫描无线网络: sudo iwlist wlo1 scan | grep ESSID # 注意将 wlan0…

BOE(京东方)亮相世界显示产业创新发展大会 以创新科技全面引领行业风向标

2024年12月19日,世界显示产业创新发展大会在成都举办,来自全球的显示领域企业及行业专家汇聚一堂,共同探讨新一轮产业升级趋势及行业未来发展方向。BOE(京东方)总裁高文宝博士应邀出席大会,并在开幕式发表《屏之物联 聚智创新》主题演讲,引发现场嘉宾和观众强烈共鸣。大…

BOE(京东方)“向新2025”年终媒体智享会落地成都 持续创新引领产业步入高价值增长新纪元

12月20日,BOE(京东方)“向新 2025”年终媒体智享会的脚步从上海延伸至成都。川渝之地,作为 BOE(京东方)产业生态战略布局中的关键一子,此刻再度成为行业瞩目的焦点。本次活动全面回溯了BOE(京东方)在2024年多个关键领域斩获的斐然佳绩,深入剖析了六大维度构建的“向新…

BOE(京东方)绿色低碳显示生态交流会成功举办 共筑行业绿色未来

2024年12月19日,世界显示产业创新发展大会在成都盛大召开,众多行业专家及产业链伙伴齐聚一堂,共同探讨显示产业科技创新成果与未来发展方向。作为全球半导体显示行业龙头企业,BOE(京东方)在大会同期举办了主题为“物联视界,碳索未来”的绿色低碳显示生态交流会,携手上下…