我是QML的初学者并尝试在QWdiget中插入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项目。
非常感谢你的帮助,祝你有个美好的一天!
答案 0 :(得分:2)
有一个特殊的QQuickWidget
,专门用于这个目的。
QQuickWidget *view = new QQuickWidget;
view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
view->show();
答案 1 :(得分:0)
m_engine->addImportPath("qrc:/qml/imports");
m_engine->load(QUrl(QStringLiteral("qrc:/qml/main.qml")));
// m_engine->rootContext()->setContextProperty("mainWindows", this);
qDebug() << "Ok engine created";`
`QWindow *qmlWindow = qobject_cast<QWindow*>(m_engine->rootObjects().at(0));
QWidget *container = QWidget::createWindowContainer(qmlWindow, this);
container->setMinimumSize(200, 200);
container->setMaximumSize(1200, 900);
ui->verticalLayout->addWidget(container);`