मैंने qtcreator में एक MainWindow : public QMainWindow
और एक qtquick ui फ़ाइल (टूलबॉक्स के लिए) बनाई है। मैं चाहता हूं कि टूलबॉक्स मेनविंडो में फ्लोटिंग सबविंडो के रूप में दिखाई दे। मैं उसके लिए QMdiArea
का उपयोग करने का प्रयास कर रहा हूं। एक ट्यूटोरियल जो मैंने देखा है वह कहता है कि मुझे QMdiArea
में इस तरह एक विंडो जोड़ने की आवश्यकता है:
mdi->addSubWindow(win);
जहां win
एक QWidget
है। मैं अपने सी++ कोड में qml के साथ बनाए गए टूलबॉक्स का उपयोग कैसे करूं?
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
}
}
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।