在Qt 5.1中(大概從現在開始),你應該使用QWidget :: createWindowContainer。 您的應用程序應該是基於QWidget的應用程序,並將QML放入QWidgets中。將QWidgets放入QML應用程序不受支持。請參閱blog entry。
如果您有一個表單類,並且想要將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");