मैंने qtcreator में एक MainWindow : public QMainWindow और एक qtquick ui फ़ाइल (टूलबॉक्स के लिए) बनाई है। मैं चाहता हूं कि टूलबॉक्स मेनविंडो में फ्लोटिंग सबविंडो के रूप में दिखाई दे। मैं उसके लिए QMdiArea का उपयोग करने का प्रयास कर रहा हूं। एक ट्यूटोरियल जो मैंने देखा है वह कहता है कि मुझे QMdiArea में इस तरह एक विंडो जोड़ने की आवश्यकता है:

mdi->addSubWindow(win);

जहां win एक QWidget है। मैं अपने सी++ कोड में qml के साथ बनाए गए टूलबॉक्स का उपयोग कैसे करूं?

1
saga 4 पद 2018, 14:01

1 उत्तर

सबसे बढ़िया उत्तर

आप QQuickWidget का उपयोग कर सकते हैं लेकिन याद रखें कि QML की जड़ एक आइटम या एक वर्ग होना चाहिए जो आइटम से विरासत में मिला हो, यह विंडो या एप्लिकेशनविंडो नहीं हो सकता है।

#include <QApplication>
#include <QMainWindow>
#include <QMdiArea>
#include <QQuickWidget>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QApplication app(argc, argv);
    QMainWindow w;
    QMdiArea *mdiarea = new QMdiArea;
    w.setCentralWidget(mdiarea);
    QQuickWidget *toolbar = new QQuickWidget(QUrl("qrc:/main.qml"));
    toolbar->setResizeMode(QQuickWidget::SizeRootObjectToView);
    mdiarea->addSubWindow(toolbar);
    w.show();
    return app.exec();
}

main.qml

import QtQuick 2.9
import QtQuick.Controls 2.4

Rectangle {
    visible: true
    width: 640
    height: 480
    color: "red"
    Button{
        text: "Stack Overflow"
        anchors.centerIn: parent
    }
}

enter image description here

2
eyllanesc 4 पद 2018, 14:41