在这个项目中,我们将手动创建一个使用C++和QML的QT Quick项目。我们将使用CMake作为构建系统,并详细介绍各个步骤。
创建项目目录结构
首先创建一个项目目录结构,包含以下文件:
css
project_directory/
├── CMakeLists.txt
├── main.cpp
├── resources.qrc
└── main.qml
创建CMakeLists.txt文件
首先,在您的工作目录中创建一个新的项目文件夹,例如 cmake_qml_cpp
。在这个文件夹内创建一个名为 CMakeLists.txt
的文件,这是CMake的配置文件。
cmake
# 指定CMake的最低版本
cmake_minimum_required(VERSION 3.20)
# 定义项目名称
project(cmake_qml_cpp)
# 查找QT6的SDK,并指定需要的组件
find_package(Qt6 REQUIRED COMPONENTS Quick)
# 将 qml.qrc 文件编译为资源
qt6_add_resources(QML_FILES qml.qrc)
# 添加可执行文件
add_executable(${PROJECT_NAME} main.cpp ${QML_FILES})
# 将QT的模块链接到我们的可执行文件
target_link_libraries(${PROJECT_NAME} Qt6::Quick)
cmake_minimum_required(VERSION 3.20)
: 指定CMake的最低版本为3.20。确保使用的CMake版本不低于这个版本。project(cmake_qml_cpp)
: 定义项目的名称为cmake_qml_cpp
。find_package(Qt6 REQUIRED COMPONENTS Quick)
: 查找QT6库并要求必须找到Quick
组件。add_executable(${PROJECT_NAME} main.cpp)
: 添加一个可执行文件,文件名为项目名称,源文件为main.cpp
。qt6_add_resources(QML_FILES qml.qrc)
: 通过qt6_add_resources
命令来编译资源文件,生成对应的 C++ 代码。add_executable(${PROJECT_NAME} main.cpp ${QML_FILES})
: 在生成可执行文件时,将资源文件一并包含进去。target_link_libraries(${PROJECT_NAME} Qt6::Quick)
: 将QT Quick库链接到生成的可执行文件。
创建C++源文件
在项目目录中创建一个名为 main.cpp
的文件,内容如下:
cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtQml>
int main(int argc, char *argv[]) {
// 创建QGuiApplication实例
QGuiApplication app(argc, argv);
// 创建QQmlApplicationEngine实例
QQmlApplicationEngine engine;
// 加载QML文件
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
// 检查QML文件是否加载成功
if (engine.rootObjects().isEmpty())
return -1;
// 运行应用程序
return app.exec();
}
#include <QGuiApplication>
: 引入QGuiApplication类,这是QT中用于创建GUI应用程序的基础类。#include <QQmlApplicationEngine>
: 引入QQmlApplicationEngine类,用于加载QML文件并将其与C++代码连接。int main(int argc, char *argv[])
: 程序入口函数。QGuiApplication app(argc, argv);
: 创建QGuiApplication实例,负责管理GUI应用程序的控制流。QQmlApplicationEngine engine;
: 创建QQmlApplicationEngine实例,用于加载和管理QML文件。engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
: 从资源文件加载main.qml
文件。if (engine.rootObjects().isEmpty()) return -1;
: 检查是否成功加载了QML文件,如果没有则返回-1以退出程序。return app.exec();
: 运行应用程序事件循环。
创建资源文件
资源文件用于存放QML代码和其他资源。在项目目录中创建一个名为 qml.qrc
的资源文件,内容如下:
xml
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>
<RCC>
: 资源文件的根元素。<qresource prefix="/">
: 定义资源的前缀,表示在QML中使用qrc:/
来访问这些资源。<file>main.qml</file>
: 列出要包含在资源文件中的QML文件。
创建QML文件
在项目目录中创建一个名为 main.qml
的文件,内容如下:
qml
import QtQuick 2.15
import QtQuick.Controls 2.15
ApplicationWindow {
visible: true
width: 400
height: 300
title: "Hello QML"
Rectangle {
anchors.fill: parent
color: "lightblue"
Text {
anchors.centerIn: parent
text: "Hello, QML!"
font.pointSize: 24
}
}
}
import QtQuick 2.15
: 导入QT Quick模块。import QtQuick.Controls 2.15
: 导入QT Quick控制模块,以便使用控件。ApplicationWindow
: 定义应用程序窗口。visible: true
: 设置窗口可见。width
和height
: 定义窗口的宽度和高度。title
: 设置窗口的标题。Rectangle
: 在窗口中绘制一个矩形。Text
: 在矩形中心显示文本。
构建和运行项目
在终端中导航到项目目录,运行以下命令:
bash
mkdir build
cd build
cmake ..
make
mkdir build
: 创建一个名为build
的子目录以存放构建文件。cd build
: 进入build
目录。cmake ..
: 运行CMake以生成构建文件。make
: 编译项目,生成可执行文件。
运行应用程序
在 build
目录中,运行生成的可执行文件(通常是 cmake_qml_cpp
):
bash
./cmake_qml_cpp
- 运行生成的可执行文件,您应该能看到一个包含文本"Hello, QML!"的窗口。