0
我是QML的初學者,並嘗試在QWdiget中插入QML視圖但我不明白爲什麼它不起作用。如何在QWidget中插入QML視圖
這裏是我的QML文件的一個簡單的例子(這不是真正的文件):
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.2
import QtQml.Models 2.1
ObjectModel {
id: itemModel
Rectangle {
color: "orange"
anchors.fill: parent
}
Rectangle {
color: "orange"
anchors.fill: parent
}
Rectangle {
color: "orange"
anchors.fill: parent
}
}
ListView {
id: my_list
anchors.fill: parent
model: itemModel
}
}
這就是我如何加載它在我的主窗口:
QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view, this);
container->setMinimumSize(200, 200);
container->setFocusPolicy(Qt::TabFocus);
view->setSource(QUrl("main.qml"));
ui->dockWidget->setWidget(container);
如何我可以在QWidget中插入我的視圖嗎? 目前,我確實需要使用QML視圖,因爲我需要在已經存在的應用程序中使用它,所以我不能使用QML項目。
非常感謝您的幫助和美好的一天!
您好! 感謝您的回答。但是,即使我嘗試使用QQuickWidget,我也遇到以下錯誤:'Syntax error:ListView {' 我不明白這裏有什麼問題。 –
您的代碼沒有根項目。另外,由於QQuickWidget是一個QQuickWindow的包裝,我假定根項目必須是一個窗口,或者是一個ApplicationWindow,或者一個簡單的Window。 – dtech
這很奇怪,因爲我已經試過了。 但是,如果我使用作爲根項目的窗口,我有以下錯誤信息:'QQuickWidget只支持加載從QQuickItem派生的根對象。 如果您的示例使用QML 2(例如qmlscene)和您加載的 具有'import QtQuick 1.0'或'import Qt 4.7'的.qml文件,則會發生此錯誤。 要使用'import QtQuick 1.0'或'import Qt 4.7'加載文件,請在Qt Quick 1模塊中使用 QDeclarativeView類。 ' 但我沒有使用QtQuick 1.0或Qt 4.7。 如果我使用DeclarativeView,它將不支持'import QtQuick 2.4' –