1.前言

QDS:Qt Design Studio是Qt前端开发工具。

QTC:Qt Creator 是Qt前后端开发工具。

使用QDS开发单独前端效果会更好一些,也是目前主流前后端分离开发的方式。那么就有必要熟悉QTC与QDS合并后的文件结构。

截止2026年8月,QDS版本为4.8.2。注意此版本生成的文件结构与4.5之前文件结构不一样。


2.新版本QDS(4.5之后)

2.1 步骤一 QDS创建项目后文件夹结构

刚创建项目,其文件夹如下:

项目文件夹

1)Generated文件夹

2)项目同名文件夹

3)(项目同名+Content)文件夹

4) CMakeLists.txt

5)Qds.cmake

2.2 步骤二 QDS选择Cmake导出方式后文件夹结构

项目文件夹

1)App文件夹

2)cmake文件夹

3)Dependencies文件夹

4)Generated文件夹

5)项目同名文件夹

6)(项目同名+Content)文件夹

7) CMakeLists.txt

8) Qds.cmake

9) qtquickcontrols2.conf

10) 项目同名.qmlproject

11) 项目同名.qrc

2.3 步骤三 QTC打开QDS项目

使用QTC打开QDS项目,选择CmakeLists文件即可。打开后会新增.qtcreator文件。如下图所示:

2.4 结构详解

2.4.1 APP文件夹(C++ 后端源码)

存放C++代码的目录。通常包含 main.cpp(程序启动入口,负责加载QML文件)、window.h/cpp 等。开发者在这里编写业务逻辑、C++模型(Model)、自定义控件插件等,并将其暴露给QML调用。

2.4.2 cmake文件夹

存放CMake构建所需的辅助脚本或模块文件(例如,用于查找特定第三方库的.cmake文件)。在标准小型项目中可能为空,但为复杂构建预留了扩展位置。

2.4.3 Dependencies文件夹(项目依赖)

存放项目依赖的外部组件或子模块。例如,Qt Safe Renderer(安全渲染器)或从Qt Marketplace下载的付费组件通常会安装在这里。它有助于隔离第三方代码。

2.4.4 Generated 文件夹(自动生成产物)

这是CMake构建过程中自动生成的临时文件夹(通常不在版本控制中,如 .gitignore)。包含moc编译文件、qmltyperegistrations(QML类型注册)和*.qrc编译资源文件。请勿手动修改此文件夹的内容。

2.4.5 项目同名文件夹(QML界面源码)

存放核心的QML文件,通常包含 Main.qml(主窗口)和各个 Page.ui.qml(可视化UI表单)。这是设计师拖拽控件、设计布局的地方。

2.4.6(项目同名+Content)文件夹(静态资源库)

存放所有非QML的静态资源,如 .png、.jpg 图片、字体文件 .ttf 或翻译文件 .ts。你在QDS中通过 Assets 面板导入的图片,默认都会被复制到此文件夹下,并通过QDS自动注册到构建系统中。

2.4.7 CMakeLists.txt(项目总入口)

这是Qt Creator唯一需要打开的文件。它是整个项目的构建脚本,定义了C++ 源码、依赖库、Qt版本以及如何将UI资源打包进最终的可执行程序。它内部会主动包含并调用Qds.cmake。

2.4.8 Qds.cmake(专属胶水脚本)

这是QDS自动生成的CMake辅助文件。它的核心任务是自动解析同目录下的项目同名.qmlproject和项目同名+Content文件夹,将所有QML文件和图片资源自动添加到CMake的资源编译(QRC)列表中,省去开发者手动编写资源路径的麻烦。

2.4.9 qtquickcontrols2.conf(全局样式配置)

Qt Quick Controls 2的配置文件。用于定义全局主题(如 Material、Universal 风格)、主色、字体等。QDS的Properties面板中对Application窗口设置的样式,最终会写入此文件。

2.4.10 项目同名.qmlproject(QDS项目标识)

这是QDS的项目识别文件。设计师通过双击此文件在QDS中打开项目。它定义了QML模块的导入路径和文件过滤器,确保QDS的Assets、Navigator和2D/3D视图正常工作。注意:在“合并”工作流中,此文件必须保留,但QTC不直接使用它,而是由Qds.cmake读取其配置。


3旧版本(QDS4.5之前)

MyProject/                 # 项目根目录

├── MyProject.qmlproject   # QDS项目配置文件

├── assets/                # 存放图片、字体等静态资源文件

├── imports/               # 存放自定义的QML模块和组

├── MyProject/          # 默认的项目QML模块 (例如)

├── qml/                   # 存放主要的QML界面文件 (.ui.qml)

├── Screen01.ui.qml

├── qmldir                 # QML模块描述文件

├── ... (其他配置文件)


4问题

4.1 QDS 4.8.2有使用教程吗?

4.2 QDS 4.8.2导入图片的正确方式是什么

将图片文件直接拖拽到QDS的2D、Navigator(导航器)或 Code(代码)视图里。图片会自动出现在Assets面板中

4.3 为什么在项目添加一个Images文件夹,将图片放进去,QDS就能识别到?

文件夹结构变化的确QDS会检测到,并在QDS运行时能正常显示,但是这种添加方式非Assets资源方式添加,与QTC合并后会找不到相关图片。

4.4 QDS导出项目是否选Enable CMake Gengrator

,前后端协作时是必要的,这个选项建立了一个双向链接:

当你在QDS中修改UI、添加或删除资源(如图片、QML文件)时,QDS会自动更新这个 CMakeLists.txt 文件

这样,当开发者在Qt Creator中打开这个 CMakeLists.txt 文件时,就能获得一个与你在QDS中完全同步的项目,所有文件引用和结构都是最新的

4.5 QTC使用QDS项目是直接打开此QDS项目进行开发?

4.6 QTC打开QDS项目是选CMakeList.txt还是XX.qmlproject

选CMakeList.txt

4.7 合并后主题是否由qtquickcontrols2.conf决定?

是的,但是如果是Basic主题,QDS和QTC显示会不一样,QDS是设计模式不依据操作系统主题,而QTC运行时会依据操作系统主题。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐