1. QtMCU开发环境搭建与第一个LED闪烁程序
任务目标
使用Qt Quick创建一个最小可运行的窗口程序,在窗口中显示文本“Hello Qt Quick”。本案例聚焦于从零搭建一个可编译、可运行的Qt Quick工程,验证Qt开发环境是否就绪。
环境与依赖
- Qt 5.15及以上版本(或Qt 6.x),需包含Qt Quick和Qt Quick Controls 2模块。
- 编译器:MSVC 2019/2022(Windows)、GCC(Linux/macOS)或MinGW。
- 构建工具:CMake 3.16+ 或 qmake(本案例使用CMake)。
工程结构
HelloQtQuick/
├── CMakeLists.txt
├── main.cpp
└── qml/
└── Main.qml
完整实现代码
CMakeLists.txt — 配置Qt Quick工程构建规则:
cmake_minimum_required(VERSION 3.16)
project(HelloQtQuick VERSION 1.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS Quick)
# 若使用Qt5,将上面一行替换为:
# find_package(Qt5 REQUIRED COMPONENTS Quick)
qt_add_executable(HelloQtQuick
main.cpp
)
qt_add_qml_module(HelloQtQuick
URI HelloQtQuick
VERSION 1.0
QML_FILES qml/Main.qml
)
target_link_libraries(HelloQtQuick PRIVATE Qt6::Quick)
main.cpp — 程序入口,加载QML文件:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/qt/qml/HelloQtQuick/qml/Main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
qml/Main.qml — 界面定义,显示目标文本:
import QtQuick
import QtQuick.Window
Window {
width: 400
height: 300
visible: true
title: qsTr("第一个Qt Quick界面")
Text {
anchors.centerIn: parent
text: qsTr("Hello Qt Quick")
font.pixelSize: 24
color: "#2c3e50"
}
}
运行与验证
- 构建:在工程根目录执行以下命令:
mkdir build && cd build
cmake ..
cmake --build .
- 运行:执行生成的可执行文件(Windows下为
HelloQtQuick.exe,Linux/macOS下为./HelloQtQuick)。 - 通过条件:程序启动后弹出窗口,标题栏显示“第一个Qt Quick界面”,窗口中央显示黑色文字“Hello Qt Quick”,字体大小约为24像素。窗口可正常关闭,无控制台报错输出。
常见问题
- QML模块加载失败:检查CMake中
qt_add_qml_module的URI与main.cpp中加载路径是否一致。若使用Qt5,需将import QtQuick改为import QtQuick 2.15,并调整CMake配置。 - 窗口不显示:确认
visible: true已设置,且engine.rootObjects()非空(若为空,QML文件路径错误或语法有误)。 - 中文乱码:确保源文件保存为UTF-8编码,并在
main.cpp顶部添加#include <QTextCodec>(仅Qt5需要,Qt6默认UTF-8)。