目录
- 1. 如何显示HelloWorld?
- 2. QML工程如何创建?
- 3. QML HelloWorld工程里有什么文件?
1. 如何显示HelloWorld?
本系列文章基于Windows11+Qt6.3,GUI开发第一步,显示一个Hello world。
import QtQuick //Qt5 需要指定版本号,如:import QtQuick 2.0。Qt6 可以不指定,不指定将导入最新版本
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Text {
anchors.centerIn: parent //使用锚定位,锚定在parent的中心
text: qsTr("Hello World")
}
}
创建一个Window,窗口中间有一个Text组件,显示Hello world。
2. QML工程如何创建?
一路下一步
3. QML HelloWorld工程里有什么文件?
工程将生成3个文件。
- pro文件不用多说,工程文件。
- main.cpp 初始化QML引擎,加载指定的qml文件
- main.qml 作为qml引擎的主文件被加载,文件名无限制,由QML引擎指定加载的文件
HelloWorld.pro
QT += quick
SOURCES += \
main.cpp
resources.files = main.qml //资源文件,resources名称可自定义,可以使用+=添加资源文件
resources.prefix = /$${TARGET} //资源文件路径前缀
RESOURCES += resources //添加到Qt资源文件
...
为了简洁易理解,非必要qmake代码已省略。首先要添加quick模块才能使用QtQuick功能。
QML通常配合C++开发,C++最为高性能后台做计算,QML做展示。main.cpp必不可少。
QML代码写在main.qml中,添加到资源文件中让引擎访问。
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv); //QApplication 是QWidget模块带的
QQmlApplicationEngine engine; //创建QML引擎
const QUrl url(u"qrc:/EpHelloWorld/main.qml"_qs);
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url); //引擎加载QML文件
return app.exec(); //进入事件循环
}
main.qml
import QtQuick //Qt5 需要指定版本号,如:import QtQuick 2.0。Qt6 可以不指定,不指定将导入最新版本
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Text {
anchors.centerIn: parent //使用锚定位,锚定在parent的中心
text: qsTr("Hello World")
}
}