QT 初识

目录

创建项目

[创建图形化hello word](#创建图形化hello word)

图形化

代码方式


创建项目

点击新建项目

下图中

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 左侧:模板分类 - 项目:用于创建完整的工程类资源,包含不同类型的应用程序或项目结构。 - Application:应用程序类项目,是最常用的分类,用于创建可执行的应用程序。 - Library:库类项目,用于创建可被其他项目引用的代码库(如静态库、动态库)。 - 其他项目 :包含非标准类型的项目,如Non-Qt Project(非Qt技术栈的项目)、Import Project(导入现有项目)。 - 文件和类:用于创建单个文件或类的模板,支持多种编程语言和技术类型。 - C++:C++语言相关的文件/类模板(如类定义、头文件、源文件等)。 - Modeling:建模相关的模板(如状态图、时序图等模型文件)。 - Qt:Qt框架专属的文件模板(如Qt界面文件、资源文件等)。 - GLSL:OpenGL着色语言相关的文件模板。 - General:通用类型的文件模板(如纯文本文件、Markdown文件等)。 - Java:Java语言相关的文件模板。 - Python:Python语言相关的文件模板。 | 中间:具体模板(以"Application"分类为例) - Qt Widgets Application:基于Qt Widgets框架的桌面应用程序模板,使用Qt Designer设计界面,适合创建传统的桌面GUI应用(如带有窗口、按钮、菜单的程序)。 - Qt Console Application:Qt控制台应用程序模板,无图形界面,仅在命令行中运行(适合工具类、后台逻辑类程序)。 - Qt for Python - Empty:基于PySide6(Qt for Python)的空项目模板,用于创建Python语言的Qt应用程序。 - Qt for Python - Window:基于PySide6的带窗口的应用程序模板,默认包含一个基础窗口结构。 - Qt Quick Application - Empty:基于Qt Quick(QML)的空项目模板,适合创建现代风格的声明式UI应用(界面更具动态性和视觉表现力)。 - Qt Quick Application - Scroll:带滚动视图结构的Qt Quick应用模板。 - Qt Quick Application - Stack:带栈式导航结构的Qt Quick应用模板。 - Qt Quick Application - Swipe:带滑动导航结构的Qt Quick应用模板。 这些分类和模板的设计,让开发者可以根据需求快速选择合适的项目或文件类型,高效启动开发工作。 |

下图可以理解为选择编译工具,底层逻辑仍然是makefile,推荐使用qmake

下图中,

接着选择编译器

创建图形化hello word

图形化

双击widget.ui

拖拽label至网格板

双击输入内容

运行效果

代码方式

进入widget.cpp

上文我们使用label图形化工具,下面依然使用label函数

代码如下所示

QT中部分函数名与头文件名称相同,便于用户使用,同时也存在函数名.h等类似头文件,这些是qt发展的过程性头文件,同时它还支持string,vector等CPP头文件。

在label对象构建过程中建议用this初始化指定父对象,

原因:

在Qt中建议用 this (即指定父对象)来初始化控件,主要基于对象树管理和内存自动回收的机制,具体原因如下:

1. 内存自动管理(避免内存泄漏)

Qt引入了对象树的概念:当一个控件被指定了父对象(通过构造函数传入 this 或其他父控件),它会被加入父对象的"对象树"中。当父对象被销毁时,会自动递归销毁其所有子对象。

**- 如果像 QLabel* label = new QLabel(); 这样不指定父对象,该控件会成为"游离对象",需要开发者手动调用 delete 来释放内存,否则会造成内存泄漏。

  • 而通过 QLabel* label = new QLabel(this); 指定父对象后,当父对象(比如当前的窗口 Widget )被销毁时, label 会被自动销毁,开发者无需手动管理其内存,极大降低了内存泄漏的风险。**

2. 界面层级与显示管理

在Qt的界面体系中,控件的显示、层级关系由父对象管理:

**- 只有当控件被加入对象树(指定父对象)后,才能正确地在父控件的区域内显示、排版。

  • 如果不指定父对象,控件可能无法正常显示(因为没有归属的"容器"),或需要额外的代码来处理其显示逻辑。**

简言之,用 this 初始化本质是利用Qt的对象树自动回收机制,既简化了内存管理,又保证了界面控件的正常层级和显示,所以是更推荐的做法。

相关推荐
共享家95272 小时前
QT文件解析与乱码问题
开发语言·qt
王嘉俊9252 小时前
Qt 入门:构建跨平台 GUI 应用的强大框架
c语言·开发语言·c++·qt·入门·cpp
小白学大数据2 小时前
Python爬虫技术:招标信息抓取与关键词过滤 (1)
开发语言·爬虫·python
Irene19913 小时前
URLSearchParams :处理 URL 查询参数的接口
开发语言·前端·javascript
Dontla3 小时前
Web典型路由结构之Next.js (App Router, v13+) )(文件系统驱动的路由:File-based Routing)声明式路由:文件即路由
开发语言·前端·javascript
~无忧花开~3 小时前
JavaScript学习笔记(十七):ES6生成器函数详解
开发语言·前端·javascript·笔记·学习·es6·js
电商API_180079052473 小时前
获取淘宝商品视频API接口解析:通过商品链接url获取商品视频item_video
开发语言·爬虫·python·数据挖掘·数据分析
Pocker_Spades_A4 小时前
Python快速入门专业版(五十):Python异常处理:try-except语句(捕获单一与多个异常)
开发语言·python
hsjkdhs4 小时前
C++之友元函数与前向引用
开发语言·c++