जुलिएन के जवाब देने के लिए इसके अलावा
- प्राप्त करने के लिए इस QQuickWidget उपयोग करने के लिए QML दृश्य प्रदर्शित करने के लिए है, और फिर जोड़ने का आसान तरीका QQuickWidget के बच्चे के रूप में एक नियमित QWidget। आप दृश्य में किसी आइटम को QWidget एंकर करने के लिए एक साधारण इंटरमीडिएट QObject भी जोड़ सकते हैं।
उदाहरण के लिए:
main.qml में:
Item {
... // layouts, extra items, what have you
Item
{
objectName: "layoutItem"
anchors.fill: parent
}
... // more layouts, extra items, etc.
}
widgetanchor.h:
class WidgetAnchor: public QObject
{
ptr<QWidget> _pWidget;
QPointer<QQuickItem> _pQuickItem;
public:
WidgetAnchor(QWidget* pWidget, QQuickItem* pItem)
: QObject(pWidget), _pWidget(pWidget), _pQuickItem(pItem)
{
connect(_pQuickItem, &QQuickItem::xChanged, this, &WidgetAnchor::updateGeometry);
connect(_pQuickItem, &QQuickItem::yChanged, this, &WidgetAnchor::updateGeometry);
connect(_pQuickItem, &QQuickItem::widthChanged, this, &WidgetAnchor::updateGeometry);
connect(_pQuickItem, &QQuickItem::heightChanged, this, &WidgetAnchor::updateGeometry);
updateGeometry();
}
private:
void updateGeometry()
{
if (_pQuickItem)
{
QRectF r = _pQuickItem->mapRectToItem(0, QRectF(_pQuickItem->x(), _pQuickItem->y(), _pQuickItem->width(), _pQuickItem->height()));
_pWidget->setGeometry(r.toRect());
}
}
};
main.cpp में:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
auto pqw = new QQuickWidget;
pqw->setSource(QUrl::fromLocalFile("main.qml"));
pqw->setResizeMode(QQuickWidget::SizeRootObjectToView);
pqw->setAttribute(Qt::WA_DeleteOnClose);
auto pOwt = new MyWidget(pqw);
if (auto pOverlayItem = pqw->rootObject()->findChild<QQuickItem*>("overlayItem"))
new WidgetAnchor(pOwt, pOverlayItem);
pqw->show();
return app.exec();
}
प्रलेखन कहा गया है कि का उपयोग कर QQuickWidget विज्ञापन है इस तरह के आदेश stacking पर कोई प्रतिबंध नहीं के रूप में QQuickView और QWidget :: createWindowContainer, अधिक vantages है, लेकिन एक 'मामूली प्रदर्शन हिट' है।
उम्मीद है कि मदद करता है।
इस बारे में कुछ प्रासंगिक समाचार: [QtQuickWidget] (https://qt.gitorious.org/qt/qtdeclarative/source/b02bed1caae6966925b9efb04e1db79c3e9ef687:src/quickwidgets/qquickwidget.cpp#L169) इस समस्या के पीछे हल करती है; यही है, विगेट्स में क्यूटी त्वरित आइटम एम्बेड करना। यह क्यूटी 5.3 में उपलब्ध होगा। – Mitch