diff --git "a/user-guide/files/Qt\345\274\200\345\217\221.md" "b/user-guide/files/Qt\345\274\200\345\217\221.md" new file mode 100644 index 0000000000000000000000000000000000000000..e7f34fd31367a0a619922044d776cdebd6b12dcc --- /dev/null +++ "b/user-guide/files/Qt\345\274\200\345\217\221.md" @@ -0,0 +1,190 @@ +# Qt开发 +## 索引 +- [概述](#概述) +- [安装](#安装) + - [插件安装](#插件安装) + - [依赖软件安装](#依赖软件安装) +- [CMake项目](#cmake项目) + - [项目创建](#项目创建) + - [项目导入](#项目导入) + - [添加新文件](#添加新文件) + - [编辑资源文件](#编辑资源文件) + - [编辑代码](#编辑代码) + - [构建(生成)](#构建生成) + - [调试和运行](#调试和运行) +- [QMake项目](#qmake项目) + - [QMake项目打开项目](#qmake项目打开项目) + - [QMake项目编辑资源文件](#qmake项目编辑资源文件) + - [QMake项目编辑代码](#qmake项目编辑代码) + - [QMake项目构建(生成)](#qmake项目构建生成) + - [QMake项目调试和运行](#qmake项目调试和运行) +- [UI设计](#UI设计) + +## 概述 +- Qt开发功能由一组插件配合完成。对CMake类型的项目支持较好,对QMake类型的项目提供部分支持。目前迭代开发中 +- 目前插件已上传到了OpenVSX插件市场(Kylin-IDE默认接入此插件市场)和微软的VSCode Marketplace,可以在Kylin-IDE中使用此功能,也可以在VSCode中使用此功能。在两个插件市场中,会安装不同的依赖插件,在下文和“安装”章节说明 +- 功能简介 + * Qt Support插件,安装此插件后会安装其他依赖插件。此插件对CMake类型的Qt项目导入、创建、新文件添加做支持,并对qrc文件编辑提供支持 + * 对于使用CMake作为构建工具的项目,简称CMake项目,引入了微软开源插件CMake Tools,便于控制CMake构建、调试流程 + * 仅在使用Kylin-IDE时支持QMake类型项目。对于使用QMake作为构建工具的项目,简称QMake项目,仿照CMake Tools开发了QMake Tools插件,便于控制QMake构建、调试流程。 目前QMake类型项目不支持项目创建、新文件添加功能 + * 代码编辑,提供高亮、语法检查、代码跳转、代码补全等功能。当使用Kylin-IDE时,将使用KylinIdeTeam改造的Clangd插件;当使用VSCode时,将使用Cpp Tools插件 + * 调试,当使用Kylin-IDE时,将使用KylinIdeTeam改造的Native Debug插件;当使用VSCode时,将使用Cpp Tools插件 + * UI设计,需要安装Qt Designer,调用Qt Designer完成UI设计 + +## 安装 +### 插件安装 +- 在插件搜索框中检索Qt Support插件,点击安装。将从插件市场中下载安装Qt Support插件和依赖的插件 +![图1](resources/qt/find-qt-support.png "安装qt-support插件") + * 使用Kylin-IDE时,安装的插件组 + - kylinideteam.qt-support + - kylinideteam.qmake-tools + - ms-vscode.cmake-tools + - kylinideteam.vscode-clangd + - kylinideteam.debug + * 使用VSCode时,安装的插件组(不支持QMake类型项目) + - KylinIdeTeam.qt-support + - ms-vscode.cmake-tools + - ms-vscode.cpptools +- 使用Kylin-IDE时,请注意,若之前已安装Clangd插件(插件ID:kylinideteam.vscode-clangd),请将该插件版本升至大于等于0.2.11 +- 安装方式2:在[openKylin extensions-repo仓库](https://gitee.com/openkylin/extensions-repo/tree/master/KylinIDETeam)中,根据插件名称找到下载链接,下载安装 + +### 依赖软件安装 +- 插件需要安装系统软件后才能正常工作 +- 使用Kylin-IDE时 + * 方法一:使用插件依赖管理器,详见[插件依赖管理章节](./插件依赖管理.md) + * 方法二:逐个安装依赖软件(如需sudo请自行添加) + - 安装clangd(Clangd代码编辑插件依赖) + * 命令举例:apt install clangd或yum install clang-tools-extra + - 安装编译构建工具 + * 命令举例:apt install build-essential cmake或yum install gcc gcc-c++ cmake + - 安装gdb(调试插件依赖) + * 命令举例:apt install gdb或yum install gdb + - 安装Qt + * 命令举例:apt install qtbase5-dev或yum install qt5-qtbase-devel +- 使用VSCode、Linux系统时不需安装clangd,其他软件请参考上文“方法二”;使用Windows系统时,请参考Qt Support插件readme + +## CMake项目 +### 项目创建 +仅描述会产生疑问的地方。 +- 后续会和现有项目创建功能整合,目前CMake类型Qt项目创建为独立功能 +- 布局 + * CMake Tools和QMake Tools的视图布局可以拖动到IDE基础平台右侧,更方便操作 + - 以CMake Tools为例,鼠标左键点住左侧CMake Tools活动栏图标不松,拖动到右侧 + * ![图2](resources/qt/tool-right.png "工具布局拖动到右侧") + - 右上角的布局切换按钮可以控制右侧工具视图的显示和隐藏 + * ![图3](resources/qt/right-visible.png "右侧工具视图显示/隐藏") +- 入口 + * 未打开任何文件夹、工程时,选择“创建Qt项目”(注意目前仅支持CMake类型的项目) + - ![图2](resources/qt/entry.png "入口") + * 或在资源管理器视图下(最左侧活动栏第一个图标)右键,在右键菜单中选择“创建Qt项目” + * 或直接打开Qt项目文件夹 +- Qt版本选择 + * 在创建项目的配置中,有一个步骤是选择Qt版本,请选择一个qamke二进制文件路径,例如:/usr/bin/qmake + - ![图3](resources/qt/qt-ver-pick.png "Qt版本选择") +- 编辑支持一处需要注意的地方 + * 以QtWidget Application为例,在创建好项目并打开该项目后,在资源管理器视图中点击“qtwidgetapplication.cpp”,会发现有些代码下面标了红色波浪线,这是由于ui头文件并未生成导致的。 + - ![图4](resources/qt/no-ui-file.png "缺少UI头文件") + * 解决方法 + - 执行“生成”操作,可在build目录下生成对应头文件 + * 方式1 + - ![图4](resources/qt/generate1.png "生成方式1") + * 方式2 + - ![图4](resources/qt/generate2.png "生成方式2") + - 请关闭该代码文件,再重新打开,此时代码已无红色波浪线,代表语法解析正常 + * 目前需要重新打开代码文件以触发对该代码文件的重新分析。若依赖软件clangd版本为11或更高则不需重新打开代码文件 +- 若弹出Clangd插件提示“compile_commands.json上的Clangd配置文件已更改。要重新启动吗?”,请选择“Yes”或“Yes, always” + * compile_commands.json是clangd的编译命令配置文件,指导clangd代码文件如何编译。代码编辑需要正确的compile_commands.json配置文件 + * ![图4](resources/qt/clangd-conf-update.png "compile_commands.json更新") +- 项目创建后,打开项目时会生成CMake配置,出现图中提示是正常现象,请忽略 + * ![图4](resources/qt/build-err-ignore.png "可忽略的信息") + * 出现原因 + - CMake Tools默认会使用ninja作为构建系统,如果系统上不存在ninja命令,会出现该日志。此时,cmake会使用Makefile构建系统,程序仍然可以正常构建。在Kylin系统上可以通过安装ninja-build包,来使用ninja构建系统 + - “此版本的 CMake 不支持‘toolchains’对象类型”,是由于CMake版本较低,可忽略该提示 + +### 项目导入 +- 注意,目前仅支持CMake项目导入 +- 未打开项目时,在资源管理器视图(最左侧活动栏第一个图标)选择“导入 Cmake Qt项目” +- 已打开项目时,在资源管理器视图下(最左侧活动栏第一个图标),鼠标右键,在弹出的菜单中选择为“导入Qt项目”,然后根据提示操作即可 +- 或直接通过“文件”菜单的“打开文件夹”子菜单打开项目文件夹 + +### 添加新文件 +- 在资源管理器视图下(最左侧活动栏第一个图标),鼠标右键,在弹出的菜单中选择为“Qt项目添加新文件”,然后根据提示操作即可。添加新文件后将自动更改CMakeLists.txt或提示用户更改 + * ![图](resources/qt/new-file.png "添加新文件") + +### 编辑资源文件 +- 在资源管理器视图下(最左侧活动栏第一个图标),鼠标左键单击qrc文件,会弹出qrc文件编辑器,根据提示操作即可 + * ![编辑qrc文件](resources/qt/edit-qrc.png "编辑qrc文件") + +### 编辑代码 +- 代码高亮:可以看到代码不同字段有不同着色 +- 代码跳转:在函数、方法、变量上使用ctrl键+鼠标左键,能够跳转到函数、方法、变量定义或引用处。在头文件名称上使用ctrl键+鼠标左键能够跳转到头文件处 + * 代码跳转后希望回到上一次浏览的代码位置,可以点击上方工具栏的左右方向按钮 +- 代码补全:编码时输入前几个字母,会显示可能的补全列表 +- 代码窥视图:将鼠标移动到符号上,会显示符号的信息 +- 语法检查:检测到的语法问题会在相关代码下方标注波浪线,鼠标放置于波浪线上方的代码上时会提示语法问题 + +### 构建(生成) +- 不需要配置task.json和launch.json文件。使用了和task.json、launch.json配置方式不同的机制,通过CMake Tools菜单操作即可 +- CMake Tools侧边栏视图如下所示 + * ![CMake Tools侧边视图](resources/qt/cmake-tools-ui.png "CMake Tools视图") + * 能够操作的菜单条目,当鼠标置于其上时,会在条目尾部显示可执行的按钮 + * 【配置】菜单 + - 执行配置,生成配置文件 + - 设置编译构建工具 + - 设置编译构建类型,例如:Debug、Release等 + * 【生成】菜单 + - 执行生成,构建生成目标程序文件 + - 设置生成目标,当CMakeLists.txt中配置了多个目标时,可选择生成的目标 + * 【测试】菜单 + - 通过CTest命令运行CMake测试 +- CMake Tools底部状态栏视图如下所示 + * ![CMake Tools底部状态栏视图](resources/qt/cmake-bottom-bar.png "CMake Tools底部状态栏视图") + * 图中从左向右介绍 + - 构建类型配置 + - 构建工具配置 + - 生成 + - 调试 + - 运行 + +### 调试和运行 +- 不需要配置launch.json,使用了与launch.json配置方式不同的机制 + * 不要使用F5快捷键和“运行”菜单中的“启动调试”子菜单 + * 不要使用主菜单栏下方的工具栏中的调试按钮 + * 不要使用左侧活动栏中的调试按钮 +- 请使用CMake Tools底部状态栏视图中的调试、运行按钮执行调试动作 + * Qt Support插件对CMake Tools按钮做了隐藏和调整,这两个按钮可以直接启动调试和运行 + * ![调试和运行按钮](resources/qt/debug-run.png "调试和运行按钮") + +## QMake项目 +与CMake Tools工具类似,可以调整QMake Tools工具视图布局,可以拖动到IDE基础平台右侧,以方便操作 +### QMake项目打开项目 +- 通过“文件”菜单,“打开文件夹”打开已有的QMake项目即可 + +### QMake项目编辑资源文件 +- 参考CMake项目的[编辑资源文件](#编辑资源文件) + +### QMake项目编辑代码 +- 参考CMake项目的[编辑代码](#编辑代码) + +### QMake项目构建(生成) +- 不要配置task.json和launch.json文件,通过QMake Tools菜单操作即可 +- 【构建】菜单 + * 执行构建(生成)操作 + * 可以设置构建目标 + +### QMake项目调试和运行 +- 不需要配置launch.json,使用了与launch.json配置方式不同的机制 + * 不要使用F5快捷键和“运行”菜单中的“启动调试”子菜单 + * 不要使用主菜单栏下方的工具栏中的调试按钮 + * 不要使用左侧活动栏中的调试按钮 +- 【调试】菜单 + * 执行调试,设置调试参数 + * 配置调试目标 +- 【启动】菜单 + * 运行目标程序 + * 设置运行目标 + +## UI设计 +- 需安装Qt Designer,调用Qt Designer完成UI设计 + * 在资源管理器视图中鼠标双击ui文件,在编辑器中打开ui文件 + * 在编辑器中右键,选择“在Qt设计器中打开”,调用Qt Designer打开ui文件 diff --git a/user-guide/files/resources/qt/build-err-ignore.png b/user-guide/files/resources/qt/build-err-ignore.png new file mode 100644 index 0000000000000000000000000000000000000000..0b75b2d1ec8c5f1ddd94f7a6ef7cdeef28a2a8e1 Binary files /dev/null and b/user-guide/files/resources/qt/build-err-ignore.png differ diff --git a/user-guide/files/resources/qt/clangd-conf-update.png b/user-guide/files/resources/qt/clangd-conf-update.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf23517d15a2bf38eb795b8cec1e345d2e28abf Binary files /dev/null and b/user-guide/files/resources/qt/clangd-conf-update.png differ diff --git a/user-guide/files/resources/qt/cmake-bottom-bar.png b/user-guide/files/resources/qt/cmake-bottom-bar.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1fe08a52844434e84928c03e547c2e63f3d9a1 Binary files /dev/null and b/user-guide/files/resources/qt/cmake-bottom-bar.png differ diff --git a/user-guide/files/resources/qt/cmake-tools-ui.png b/user-guide/files/resources/qt/cmake-tools-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..b490131284d124640dde830c150375f0094ee2e8 Binary files /dev/null and b/user-guide/files/resources/qt/cmake-tools-ui.png differ diff --git a/user-guide/files/resources/qt/debug-run.png b/user-guide/files/resources/qt/debug-run.png new file mode 100644 index 0000000000000000000000000000000000000000..d32a6326b5e8a0b8268897bdc846236b8d47689c Binary files /dev/null and b/user-guide/files/resources/qt/debug-run.png differ diff --git a/user-guide/files/resources/qt/edit-qrc.png b/user-guide/files/resources/qt/edit-qrc.png new file mode 100644 index 0000000000000000000000000000000000000000..9e119773a8615da383f1ce4c3c00dfbed314eb84 Binary files /dev/null and b/user-guide/files/resources/qt/edit-qrc.png differ diff --git a/user-guide/files/resources/qt/entry.png b/user-guide/files/resources/qt/entry.png new file mode 100644 index 0000000000000000000000000000000000000000..fb07bad91ecf5c924f15c0723df1e8b285244f11 Binary files /dev/null and b/user-guide/files/resources/qt/entry.png differ diff --git a/user-guide/files/resources/qt/find-qt-support.png b/user-guide/files/resources/qt/find-qt-support.png new file mode 100644 index 0000000000000000000000000000000000000000..4891e4afa2c02ed7f4e05c709c84f9f89886ba11 Binary files /dev/null and b/user-guide/files/resources/qt/find-qt-support.png differ diff --git a/user-guide/files/resources/qt/generate1.png b/user-guide/files/resources/qt/generate1.png new file mode 100644 index 0000000000000000000000000000000000000000..f6bda23a2374b1918f7cfad99f44d2a557e0b331 Binary files /dev/null and b/user-guide/files/resources/qt/generate1.png differ diff --git a/user-guide/files/resources/qt/generate2.png b/user-guide/files/resources/qt/generate2.png new file mode 100644 index 0000000000000000000000000000000000000000..6e96c64ad1904af25121fe2b2dbb4bd8f430fc56 Binary files /dev/null and b/user-guide/files/resources/qt/generate2.png differ diff --git a/user-guide/files/resources/qt/new-file.png b/user-guide/files/resources/qt/new-file.png new file mode 100644 index 0000000000000000000000000000000000000000..0591ac7ddbb6c54654f5898c0c58fcc2f36fc0e9 Binary files /dev/null and b/user-guide/files/resources/qt/new-file.png differ diff --git a/user-guide/files/resources/qt/no-ui-file.png b/user-guide/files/resources/qt/no-ui-file.png new file mode 100644 index 0000000000000000000000000000000000000000..f17f3f99408e779d66cacbdb4054b26e89d5b95b Binary files /dev/null and b/user-guide/files/resources/qt/no-ui-file.png differ diff --git a/user-guide/files/resources/qt/qt-ver-pick.png b/user-guide/files/resources/qt/qt-ver-pick.png new file mode 100644 index 0000000000000000000000000000000000000000..3d222c78e8d132682a9ec98c9ba3217d0e5e376d Binary files /dev/null and b/user-guide/files/resources/qt/qt-ver-pick.png differ diff --git a/user-guide/files/resources/qt/right-visible.png b/user-guide/files/resources/qt/right-visible.png new file mode 100644 index 0000000000000000000000000000000000000000..fc647f8e4c11825c8e62da855b17205d9a2aacbc Binary files /dev/null and b/user-guide/files/resources/qt/right-visible.png differ diff --git a/user-guide/files/resources/qt/tool-right.png b/user-guide/files/resources/qt/tool-right.png new file mode 100644 index 0000000000000000000000000000000000000000..b5adec0d23ba1f1ebb6967b1691e2c528df3850e Binary files /dev/null and b/user-guide/files/resources/qt/tool-right.png differ diff --git "a/user-guide/\347\233\256\345\275\225.md" "b/user-guide/\347\233\256\345\275\225.md" index f097d3ff700d19e55f6575d0ead2a5dc780b5f59..30e1ca342780d20ae746dab45efbf1d8341694a6 100644 --- "a/user-guide/\347\233\256\345\275\225.md" +++ "b/user-guide/\347\233\256\345\275\225.md" @@ -21,6 +21,8 @@ #### [远程开发](./files/远程开发.md) +#### [Qt开发](./files/Qt开发.md) + #### [C-C++开发](./files/C-C++开发.md) #### [Java开发](./files/Java开发.md) @@ -37,4 +39,4 @@ #### [历史调试](./files/历史调试.md) -#### [问题反馈](./files/问题反馈.md) \ No newline at end of file +#### [问题反馈](./files/问题反馈.md)