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"
}