gpt4 book ai didi

c++ - 在 C++ 代码中使用 qml 类型作为 QWindow

转载 作者:行者123 更新时间:2023-11-30 03:19:32 26 4
gpt4 key购买 nike

我在 qtcreator 中创建了一个 MainWindow : public QMainWindow 和一个 qtquick ui 文件(用于工具箱)。我希望工具箱在主窗口中显示为 float 子窗口。为此,我正在尝试使用 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();
}

ma​​in.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

关于c++ - 在 C++ 代码中使用 qml 类型作为 QWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53611468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com