在 Qt 5.1 中(大概从现在开始)你应该使用 QWidget::createWindowContainer。您的应用程序应该是基于 QWidget 的应用程序,并将 QML 放在 QWidgets 中。不支持将 QWidgets 放入 QML 应用程序。请参阅此博客条目。
如果您有一个表单类并且您想将 qml 放入容器小部件中。
如果你有这个 QML:
import QtQuick 2.0
Rectangle {
property alias text: textItem.text
width: 156
height: 35
Text {
width: 150
height: 20
text: qsTr("Hello World")
id: textItem
}
}
在名为 myqml.qml 的文件中,然后将其路径放入资源文件的 qml 前缀中。
然后放入表单构造函数:
ui->setupUi(this); // as normal
QQuickView* view = new QQuickView();
QWidget* widget = QWidget::createWindowContainer(view, ui->container);
view->setSource(QUrl("qrc:/qml/myqml.qml"));
if(view->status()!=QQuickView::Ready)
qDebug("can't initialise view");
widget->setMinimumSize(500,100);
QQuickItem* container = view->rootObject();
然后当你想与 QML 交互时:
container->setProperty("text", "Hello alternate universe");