如何在 QWidget 中插入 QML 视图

Ed *_*Nio 4 qt qwidget qml qtquick2

我是 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
  }
}

Run Code Online (Sandbox Code Playgroud)

这就是我在主窗口中加载它的方式:

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);
Run Code Online (Sandbox Code Playgroud)

如何在 QWidget 中插入我的视图?这时候,我真的需要使用 QML 视图,因为我需要在已经存在的应用程序中使用它,我不能只使用 QML 项目。

非常感谢您的帮助,祝您有美好的一天!

dte*_*ech 9

存在一个QQuickWidget专门用于该确切目的的特殊.

QQuickWidget *view = new QQuickWidget;
view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
view->show();
Run Code Online (Sandbox Code Playgroud)

  • 您的代码没有根项目。另外,由于 QQuickWidget 是 QQuickWindow 的包装器,我假设根项必须是一个窗口,要么是“ApplicationWindow”,要么只是一个“Window”。 (2认同)