QQuickWidget с QML внутри. Показывать другой QML выше, но не в другом окне

У меня есть QQuickWidget (MovableWidget) с QML внутри (QML1: Test.qml)

У этого QML есть кнопка, и при нажатии я хочу показать / скрыть другой QML (Test2.qml) над QML2, но не в другом окне (в Windows обе панели должны находиться в одном и том же окне "Панель задач"). QML1 должен сохранять позицию в обоих случаях, с QML1 видимым или скрытым

Я попытался добавить экземпляр QML2 внутри QML1, установив его выше, но не могу рисовать за пределами границ QML1. Так что я полагаю, что мне нужно увеличить размер QML1 и так же размер TestWidget, но в этом случае лучшее, что я достиг, это то, что окно увеличивается, но до самого дна...

main.cpp

...
MovableWidget *view = new MovableWidget;
view->setSource(QUrl("qrc:/Test.qml"));
view->setWindowFlags(Qt::FramelessWindowHint);
view->show();
if (view->rootObject())
    QObject::connect(view->rootObject(), SIGNAL(signal_showMenu(bool)), view, SLOT(onMenuShown(bool)));
...

MovableWidget.cpp

#include "movableWidget.h"

#include <QMouseEvent>

// ****************************************************************************
MovableWidget::MovableWidget(QWidget *parent)
    : QQuickWidget(parent)
{
}

// ****************************************************************************
void MovableWidget::onMenuShown(bool bShown)
{
   // setGeometry() here? parameters??
}

Test1.qml

import QtQuick 2.0

Rectangle {
    id: myWindow

    signal signal_showMenu(bool show)

    width: 250; height: 100
    color: "red"

   Button {
        id: idButtonClick

        anchors { bottom: parent.bottom; bottomMargin: 10; horizontalCenter: parent.horizontalCenter }

        height: 20
        width: 50

        text: "click"

        onClicked: {
            console.log("idButtonClick");
            test2.visible = !test2.visible

            // Here 'myWindow' height must be changed?

            signal_showMenu(test2.visible)
     }

    Test2 {
        id: test2
        anchors { bottom: myWindow.top; left: myWindow.left; right: myWindow.right; }
        height: 50
        visible: false
    }
}

Test2.qml

import QtQuick 2.0

Rectangle {
    color: "green"
}

0 ответов

Другие вопросы по тегам