码上通QT实战01--创建项目

1、QT项目的构成

Qt项目通常由多个关键组件和文件构成,这些组件共同协作以实现应用程序的功能。以下是Qt项目的主要构成部分:
项目文件(.pro或.qmake)

项目文件是Qt项目的核心配置文件,通常以.pro或.qmake为扩展名。它定义了项目的构建规则、依赖关系、源文件列表以及其他构建选项

cpp 复制代码
QT += core gui
TARGET = MyApp
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui

源代码文件

Qt项目的源代码通常包括C++文件(.cpp)和头文件(.h)。这些文件实现了应用程序的逻辑和功能。主函数通常位于main.cpp中,而其他类定义和实现分布在各自的头文件和源文件中。

用户界面文件(.ui)

Qt Designer生成的UI文件(.ui)用于定义应用程序的图形用户界面。这些文件是XML格式的,可以通过Qt Designer工具进行可视化编辑,也可以通过uic工具在构建时转换为C++代码。

资源文件(.qrc)

资源文件(.qrc)用于将图像、图标、翻译文件等资源嵌入到应用程序中。这些文件在编译时会被转换为二进制数据,并链接到最终的可执行文件中

其他辅助文件

Qt项目可能还包括其他辅助文件,如配置文件(.ini)、文档(.md)、测试文件等,具体取决于项目的需求和复杂性。

通过合理组织这些组件,Qt项目可以高效地构建、维护和扩展。

2、开发环境

本项目采用QT6.9.3,IDE采用QTCREATOR18.0,数据库采用sqlite3,软件的安装,环境的配置在此忽略。

3、开始创建

1、创建项目


2、QWindow 与 QWidget 的比较

QWindowQWidget 是 Qt 框架中用于界面开发的两个核心类,分别属于不同的层级,适用于不同的场景。以下是两者的主要区别和适用场景:

功能定位

  • QWindow:属于底层窗口抽象,直接管理操作系统原生窗口(如 X11/Wayland 窗口、Win32 HWND 等)。它不包含任何用户界面组件,仅提供窗口的基本属性和事件处理(如尺寸、位置、输入事件)。适用于需要直接操作原生窗口或开发无装饰界面的场景(如 OpenGL 渲染窗口)。

  • QWidget:基于 QWindow 的高层封装,提供完整的用户界面组件(如按钮、文本框等)和布局管理。内置样式绘制、焦点管理等功能,适合传统桌面应用程序开发。

依赖关系

  • QWindow 是 QWidget 的底层基础。每个 QWidget 最终会关联一个 QWindow(通过 winId() 获取),但 QWindow 可以独立存在。
  • QWidget 依赖 QApplication 的事件循环,而 QWindow 可与 QGuiApplication 配合使用(无需完整的 QApplication)。

性能与开销

  • QWindow 更轻量,适合高性能场景(如游戏、视频播放器)。直接操作原生窗口减少中间层开销。
  • QWidget 因包含组件树和样式处理,开销较大,但开发效率更高。

典型用例

  • QWindow

    • 3D 图形渲染(如 Qt Quick 或 OpenGL 上下文管理)。
    • 需要跨平台原生窗口句柄的集成(如嵌入第三方库窗口)。
  • QWidget

    • 表单应用程序(如配置工具、数据管理界面)。
    • 需要复杂布局和交互控件的场景

4、设计UI

1、设计窗体

2、 启动参数

3、启动项目

复制代码
原创不易,打字不易,截图不易,撸码不易,整理不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,灌水,请动动你的金手指,祝您早日实现财务自由。
相关推荐
灰子学技术4 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
二十雨辰5 小时前
[python]-AI大模型
开发语言·人工智能·python
Yvonne爱编码5 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚5 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂5 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas1365 小时前
41-parse的实现原理&有限状态机
开发语言·前端·javascript
琹箐5 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
Monly216 小时前
Java:修改打包配置文件
java·开发语言
我命由我123456 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
island13146 小时前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络