Qt是一种跨平台的C++应用程序开发框架,它提供了一套丰富的工具和库,可以帮助开发者快速构建跨平台的应用程序,用于开发图形用户界面(GUI)和非GUI应用程序。
Qt 6之一:简介、安装与简单使用 https://blog.csdn.net/cnds123/article/details/130730203
Qt 6之二:项目的结构、资源文件的使用https://blog.csdn.net/cnds123/article/details/130741807
Qt 6之三: 项目的发布 https://blog.csdn.net/cnds123/article/details/130827966
Qt Creator是一个跨平台的集成开发环境(IDE),主要用于Qt应用程序开发。
Qt Creator支持多种构建系统(Build system),每种构建系统都有其特点和用法。以下是构建系统的概述:
QMake
QMake是Qt的传统构建系统,它使用简单的.pro(项目)和.pri(包含)文件来定义项目的构建过程。
特点:
用法:
一个简单的 .pro 文件可能如下所示:
SOURCES += main.cpp MyWidget.cpp
HEADERS += MyWidget.h
QT += widgets
在 Qt Creator 中,打开 .pro 文件会自动识别为一个 QMake 项目。你可以在项目设置中修改构建目录、编译器选项等。需要注意的是新版本Qt Creator如 10.0.1 版本不再在新建项目时提供 QMake 选项。
CMake
CMake是一个开源的跨平台构建系统,它使用CMakeLists.txt文件来定义构建过程。
特点:
用法:
一个简单的 CMakeLists.txt 文件可能如下所示:
cmake_minimum_required(VERSION 3.5)
project(MyApp VERSION 1.0)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
add_executable(MyApp main.cpp)
在 Qt Creator 中,打开 CMakeLists.txt 文件会自动识别为一个 CMake 项目。你可以在项目设置中修改构建目录、CMake 生成器等
Qbs
QbsQbs(Qt Build System)是一个新的构建工具,由Qt开发,用于替代QMake。
特点:
用法:
一个简单的 .qbs 文件可能如下所示:
Project {
name: "MyApp"
files: "main.cpp"
Depends { name: "cpp" }
}
在 Qt Creator 中,打开 .qbs 文件会自动识别为一个 Qbs 项目。你可以在项目设置中修改构建目录、编译器选项等。
对于Qt Creator支持的构建系统,Qt Creator会自动生成相应的构建配置文件,如.pro文件(qmake)、CMakeLists.txt文件(CMake)等。你可以直接在Qt Creator中编辑这些文件,或者使用外部编辑器进行修改。在大多数情况下,这些文件在项目的初次创建时会被自动生成,且在大部分时间里,你可能不需要手动修改这些文件。这是因为Qt Creator提供了一种图形化的方式来管理这些设置,比如通过项目属性页面来添加或删除源文件和库,设置编译器标志等。这些更改会自动反映在构建配置文件中。注意,在对构建配置文件进行更改后,应该测试构建过程,确保一切按预期工作。
在 Qt 中,创建 C++ GUI 应用程序主要有两种方法:
1、使用Qt工具
☆若使用Qt Widgets,您可以使用Qt Creator中的设计师(Designer)来可视化设计和排列控件,然后使用C++代码编写逻辑。
☆若使用Qt Quick,您可以使用Qt Creator中的Qt Quick Designer来可视化设计和布局QML界面,然后使用C++代码编写逻辑。
☆若使用Qt Quick Controls 2,您可以使用Qt Creator中的Qt Quick Designer和Qt Quick Controls Gallery来可视化设计和排列控件,然后使用C++代码编写逻辑。
Qt Widgets、Qt Quick和Qt Quick Controls 2是Qt框架中不同的UI模块(组件集合),用于创建不同类型的用户界面。
Qt Widgets是Qt框架中的一组类集合,它们代表了各种GUI元素,如按钮、滑块、文本框等,适用于创建传统的桌面应用程序。
Qt Quick是基于QML的一种现代的、动态的用户界面技术。它提供了一种描述性的语言和一套UI组件,可以创建富有动感的、流畅的用户界面。并且,Qt Quick Controls 2是Qt Quick的一部分,提供了一套现代化的、风格一致的UI控件,如按钮、滑块、对话框等。
Qt Designer、Qt Quick Designer和Qt Quick Controls Gallery是Qt Creator内置的工具。
Qt Designer:它是用于创建和编辑基于Qt Widgets的用户界面的可视化工具。您可以直观地在设计界面上拖放和排列控件,设置控件的属性,以及编辑控件的信号和槽等事件响应函数。此工具非常适合开发传统的、基于窗口的桌面应用程序。
Qt Quick Designer:这是一个用于创建和编辑基于Qt Quick的用户界面的可视化工具。与Qt Designer类似,您可以在设计界面上拖放和排列控件,设置控件的属性,以及编辑控件的事件响应函数。此工具非常适合开发动态的、响应式的、基于QML的应用程序。
Qt Quick Controls Gallery:这是一个展示Qt Quick Controls 2中所有控件和样式的应用程序。您可以运行它来查看和测试各种控件和样式,以选择最适合您的应用程序的控件和样式。此工具可以帮助您更好地了解和使用Qt Quick Controls 2。
另外,Qt Design Studio是一个独立的、强大的UI设计和开发工具,它可以创建基于Qt Quick和Qt Quick Controls 2的用户界面。Qt Design Studio也支持导入Photoshop和Sketch等设计工具的原型,使得设计师和开发者可以更好地协作。
2、手动编写代码:通过完全手工编程方式创建 GUI 应用程序,您可以使用 Qt框架中 的 QWidgets 、Qt Quick和Qt Quick Controls 2 Qt模块,直接在 C++ 代码中创建和操作 GUI 组件。这种方法需要您熟悉 Qt 的类和 API,并逐个编写 GUI 组件的代码。虽然这种方法可以提供更灵活的控制和更高的定制化程度,但它需要更多的时间和精力来编写和维护代码。
不同的构建系统(qmake、CMake或Qbs),对资源文件(如图片、音乐)的处理方式会有所不同。在某些情况下,你需要手动修改配置文件以确保这些资源被正确地包含在项目中。在Qt Creator中,使用qmake时,你可以通过图形界面来编辑.qrt文件——资源通常通过Qt资源系统(QRC)来管理,而不需要手动处理文件路径和加载资源的细节,这样可以简化资源文件的管理。对于CMake和Qbs,你可能需要手动编辑文本文件来管理资源。
以下是每个构建系统处理资源文件的基本方法:
qmake
在使用qmake时,资源通常通过Qt资源系统(QRC)来管理。你需要创建一个资源文件(通常以.qrc为扩展名),并在其中列出项目中使用的资源。然后,在.pro文件中添加对这个资源文件的引用。
例如,你的.qrc文件可能看起来像这样:
CMake
对于使用CMake的项目,资源可以通过在CMakeLists.txt文件中设置相应的命令来包含。CMake不像qmake那样有一个内置的资源系统,但你可以通过将资源文件复制到构建目录或指定的输出目录来管理资源。
例如,你可以使用configure_file或file(COPY ...)命令来复制资源:
configure_file(path/to/logo.png path/to/build/directory/logo.png COPYONLY)
# 或者
file(COPY ${CMAKE_SOURCE_DIR}/images/logo.png DESTINATION ${CMAKE_BINARY_DIR}/images)
Qbs
Qbs是一个新的构建工具,它也有自己的方法来处理资源。在.qbs文件,你可以使用Group项来指定资源文件,并将它们包含在项目中。
例如:
Group {
name: "Images"
files: ["images/logo.png", "images/background.jpg"]
fileTags: ["image"]
}
Group {
name: "Sounds"
files: ["sounds/click.wav"]
fileTags: ["sound"]
}
这里有一点需要澄清的是,一旦您创建了配置文件(.qrc、CMakeLists.txt或.qbs文件)并设置了包含资源的规则,当您添加新的资源文件到已经指定的目录或者模式下时,您可能不需要每次都手动更新配置文件。例如:
但是,如果您更改了资源文件的结构,如添加新的目录或改变文件的组织方式,您仍然需要更新这些配置文件以反映这些变化。此外,如果您希望资源在构建系统中有特殊的处理,如指定不同的资源前缀或者为不同的构建目标包含不同的资源集,您也需要手动编辑这些配置文件。
Qt框架提供了多种方式来实现对象之间的交互和通信。以下是一些主要的机制:
以上是Qt中常用的交互和通信方式的概述。根据应用程序的需求和场景,你可以选择适合的方式来实现组件之间的交互和数据传输。
下一讲,将介绍GUI 应用程序示例。