如何将 QML 文件分配给主窗口/应用程序

How to assign QML file to MainWindow/Application

本文关键字:窗口 应用程序 文件分配 QML      更新时间:2023-10-16

情况

我在这里有我的main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickView>
#include <QQmlContext>
#include "root.h"

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView view;
testApp::Root data;
view.rootContext()->setContextProperty("dataContext", &data);
view.setSource(QUrl::fromLocalFile("main.qml"));
view.show();
return app.exec();
}

和我的main.qml在这里

import QtQuick 2.12
import QtQuick.Window 2.12
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World!!!")
}

普罗贝尔姆

每当我启动我的应用程序时,它都不会将main.qml中的值分配给我的主窗口。

例如: main.qml 中的属性widthheight的值为640480。但是每当我启动应用程序时,我的窗口都会小得多(是的,我试图给它们不同的值(

问题

如何说程序:他应该在我的主窗口中使用main.qml。

如果您使用的是 QQuickView,那么根必须是 QQuickItem 作为 Item、Rectangle 等,因为 QQuickView 是一个窗口。

如果你想根窗口或应用程序窗口,那么你必须使用QQmlApplicationEngine。

在您的情况下,有 2 个窗口:一个是 QQuickView,另一个是窗口。

考虑到上述情况,您有以下 2 种选择:

  1. QQuickView
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView view;
testApp::Root data;
view.view.setResizeMode(QQuickView::SizeRootObjectToView);
view.rootContext()->setContextProperty("dataContext", &data);
view.setSource(QUrl::fromLocalFile("main.qml"));
view.setTitle("Hello World!!!")
view.show();
return app.exec();
}
import QtQuick 2.12
import QtQuick.Window 2.12
Item {
width: 640
height: 480
}
  1. QQmlApplicationEngine
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
testApp::Root data;
engine.rootContext()->setContextProperty("dataContext", &data);
engine.load(QUrl::fromLocalFile("main.qml"));
return app.exec();
}
import QtQuick 2.12
import QtQuick.Window 2.12
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World!!!")
}