我在 qtcreator 中创建了一个
MainWindow : public QMainWindow
和一个 qtquick ui 文件(用于工具箱)。我希望工具箱在主窗口中显示为浮动子窗口。我正在尝试使用 QMdiArea
来实现这一点。我看过的教程说我需要向 QMdiArea
添加一个窗口,如下所示:
mdi->addSubWindow(win);
其中
win
是 QWidget
。如何在我的 C++ 代码中使用使用 qml 创建的工具箱?
您可以使用QQuickWidget,但请记住QML的根必须是一个Item或继承自Item的类,它不能是Window或ApplicationWindow。
#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
}
}