如何将QML工具栏和菜单栏嵌入到QMainWindow中

时间:2014-11-27 09:44:45

标签: qt qml

我正在使用QWT库来绘制数据。似乎无法将QWidget嵌入QML Quick 2。所以,我决定创建QMainWindow作为我的主窗口,并使用Quick Controls创建其工具栏和菜单栏。我该如何将qml工具栏和菜单栏嵌入QMainWindow

1 个答案:

答案 0 :(得分:0)

您应该使用QML MenuBar和ToolBar

创建QML ApplicationWindow

main.qml

ApplicationWindow {
    visible: false
    menuBar: MenuBar {
        Menu {
            title: "Edit"
            MenuItem {
                text: "Cut"
            }
        }
    }
    toolBar: ToolBar {
        Row {
            anchors.fill: parent
            ToolButton {
                iconSource: "1.png"
            }
        }
    }
}

的main.cpp

QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));

然后获取指向ApplicationWindow

的指针
QWindow *qmlWindow = qobject_cast<QWindow*>(engine.rootObjects().at(0));

使用QWidget::createWindowContainer

创建窗口容器
QWidget *container = QWidget::createWindowContainer(qmlWindow);
container->setMinimumSize(qmlWindow->size());

将容器放在窗口小部件的顶部

QWidget *widget = new QWidget();
QGridLayout *grid = new QGridLayout(widget);
grid->addWidget(container,0,0);
grid->addWidget(new QPushButton(widget),1,0);
widget->show();