運(yùn)行結(jié)果:
打開Qt Creator,創(chuàng)建一個(gè)Qt Quick Qpplication,IDE為我們創(chuàng)建一個(gè)應(yīng)用工程,其中包含如下文件:
.pro工程文件,我們通過它來打開整個(gè)工程:
QT += quick
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
?在工程文件中,通常其中的字段定義:
QT += :這個(gè)是添加QT需要的模塊
TARGET = :生成最后目標(biāo)的名字
TEMPLATE =:應(yīng)用程序的生成模式,默認(rèn)是app生成應(yīng)用程序,如果需要生成庫的話就用lib
CONFIG +=:一些配置信息
HEADERS +=:工程用到的頭文件
SOURCES +=:工程用到的源文件
FORMS +=:工程中的ui文件
LIBS +=:工程依賴的靜態(tài)庫和動(dòng)態(tài)庫路徑
INCLUDEPATH += :工程需要的頭文件路徑
DESTDIR +=:目標(biāo)生成路徑
DEPENDPATH +=:工程的依賴路徑
main.qml 是Quick應(yīng)用的主窗口文件,下一篇我們重點(diǎn)介紹QML當(dāng)中的元素特性,目前只需要了解這個(gè)是應(yīng)用的主窗體。?
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
}
main.cpp中的main函數(shù),是整個(gè)應(yīng)用的入口函數(shù)。
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
setAttribute:用來啟用和禁用改變應(yīng)用程序范圍功能行為的屬性。上述代碼中的Qt::AA_EnableHighDpiScaling屬性是在Qt中啟用高DPI縮放。
QGuiApplication app(argc, argv);
派生關(guān)系:
QObject->QCoreApplication->QGuiApplication->QApplication
QGuiApplication包含主事件循環(huán),所有來自窗口系統(tǒng)和其他源的事件都在其中被處理和分派。它還處理應(yīng)用程序的初始化和結(jié)束,并提供會話管理。此外,QGuiApplication處理大多數(shù)系統(tǒng)范圍和應(yīng)用程序范圍的設(shè)置。
對于任何使用Qt的GUI應(yīng)用程序,無論該應(yīng)用程序在任何給定時(shí)間是否有0、1、2或更多窗口,都只有一個(gè)QGuiApplication對象。對于非GUI Qt應(yīng)用程序,使用QCoreApplication代替,因?yàn)樗灰蕾囉赒t GUI模塊。對于基于QWidget的Qt應(yīng)用程序,使用QApplication代替,因?yàn)樗峁┝藙?chuàng)建QWidget實(shí)例所需的一些功能。
QGuiApplication對象可以通過instance()函數(shù)訪問,該函數(shù)返回一個(gè)與全局qApp指針等效的指針。
QQmlApplicationEngine engine;
QQmlApplicationEngine類結(jié)合了QQmlEngine和QQmlComponent,以提供一種方便的方式來加載單個(gè)QML文件。文章來源:http://www.zghlxwxcb.cn/news/detail-527975.html
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
加載位于url的根QML文件。文件定義的對象樹將立即為本地文件url創(chuàng)建。異步加載遠(yuǎn)程url,監(jiān)聽objectCreated信號以確定對象樹何時(shí)準(zhǔn)備好。
如果發(fā)生錯(cuò)誤,則發(fā)出objectCreated信號,并以空指針作為參數(shù),并打印帶有qWarning的錯(cuò)誤消息。?文章來源地址http://www.zghlxwxcb.cn/news/detail-527975.html
到了這里,關(guān)于【Qt QML入門】第一個(gè)Quick應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!