1

我有一个 QQuickWidget (MovableWidget),里面有一个 QML (QML1: Test.qml)

此 QML 有一个按钮,单击时我想在 QML2 上方显示/隐藏另一个 QML (Test2.qml),但不在另一个窗口中(在 Windows 中,两个面板必须在同一个“任务栏”窗口中)。QML1 必须在两种情况下保持位置,QML1 可见或隐藏

我试图在 QML1 内添加一个 QML2 实例,将其设置在上面,但我无法在 QML1 边界之外绘制。所以我想我必须增加 QML1 的大小,所以 TestWidget 的大小,但在这种情况下,我实现的最好的事情是窗口增加了,但到了底部......

主文件

...
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)));
...

可移动小部件.cpp

#include "movableWidget.h"

#include <QMouseEvent>

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

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

测试1.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
    }
}

测试2.qml

import QtQuick 2.0

Rectangle {
    color: "green"
}
4

0 回答 0