QML QWidget 容器
QML QWidget container
我从 Qt Creator 中的 QML 开始,我非常喜欢我读过的关于它的所有内容,但现在我发现了一个复杂的问题。
见以下代码:
BLCMainWidget::BLCMainWidget(QWidget *parent) : BLCBaseWidgetControler(parent) {
QQuickView view;
view.setSource(QUrl("qrc:///main.qml"));
QWidget *container = QWidget::createWindowContainer(&view);
QHBoxLayout *layout = new QHBoxLayout;
layout->setSpacing(10);
layout->setAlignment(Qt::AlignHCenter);
layout->setContentsMargins(1, 1, 1, 1);
parent->setStyleSheet("background:QColor(200,100,150);");
layout->addWidget(container);
parent->setLayout(layout);
}
其中 parent
是我在 QMainWindow
上的 QWidget
我的应用程序,但此代码不显示我的 QQuickView
容器。显然,有问题的 parent 有一个 setCentralWidget
signed in main()
方法,我已经将这个概念完美地用于 non-QML 小部件。我怎样才能解决这个问题以显示我的 QML object 容器?
我的QML只是一个简单的概念示例:
import QtQuick 2.1
Item {
id: box
width: 640
height: 480
Rectangle {
id: redSquare
width: 30; height: 30
anchors.top: parent.top; anchors.left: parent.left; anchors.margins: 10
color: "green"
Text { text: "!"; font.pixelSize: 16; anchors.centerIn: parent }
}
}
谢谢
看看这个:QML C++ Integration
还有这个:Interact QML from C++
如果您使用的是最新版本的 Qt,QWidget::createWindoContainer 已弃用。相反,创建一个 QQuickWidget,并将其用作普通 QWidget。
我从 Qt Creator 中的 QML 开始,我非常喜欢我读过的关于它的所有内容,但现在我发现了一个复杂的问题。
见以下代码:
BLCMainWidget::BLCMainWidget(QWidget *parent) : BLCBaseWidgetControler(parent) {
QQuickView view;
view.setSource(QUrl("qrc:///main.qml"));
QWidget *container = QWidget::createWindowContainer(&view);
QHBoxLayout *layout = new QHBoxLayout;
layout->setSpacing(10);
layout->setAlignment(Qt::AlignHCenter);
layout->setContentsMargins(1, 1, 1, 1);
parent->setStyleSheet("background:QColor(200,100,150);");
layout->addWidget(container);
parent->setLayout(layout);
}
其中 parent
是我在 QMainWindow
上的 QWidget
我的应用程序,但此代码不显示我的 QQuickView
容器。显然,有问题的 parent 有一个 setCentralWidget
signed in main()
方法,我已经将这个概念完美地用于 non-QML 小部件。我怎样才能解决这个问题以显示我的 QML object 容器?
我的QML只是一个简单的概念示例:
import QtQuick 2.1
Item {
id: box
width: 640
height: 480
Rectangle {
id: redSquare
width: 30; height: 30
anchors.top: parent.top; anchors.left: parent.left; anchors.margins: 10
color: "green"
Text { text: "!"; font.pixelSize: 16; anchors.centerIn: parent }
}
}
谢谢
看看这个:QML C++ Integration 还有这个:Interact QML from C++
如果您使用的是最新版本的 Qt,QWidget::createWindoContainer 已弃用。相反,创建一个 QQuickWidget,并将其用作普通 QWidget。