我有一个 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"
}