gpt4 book ai didi

qt - 如何将 Popup 添加到嵌套项目内的根 ApplicationWindow?

转载 作者:行者123 更新时间:2023-12-02 17:18:40 24 4
gpt4 key购买 nike

我想创建一个 Popup modal覆盖整个根 ApplicationWindow , 但我想在我正在构建的小部件容器中实例化此 Popup ,它将深度嵌套在 QML 层次结构中。不幸的是,实例化一个不是 ApplicationWindow 的直接子级并且滚出 View 的 Popup 不会居中并覆盖 ApplicationWindow

在下面的代码中,我在子 Item 中实例化了一个 Popup,但我不知道如何让它在视口(viewport)上居中:

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3

ApplicationWindow {
id: root;
visible: true
width: 100
height: 150

Flickable {
id: flickable;
contentHeight: col_layout.height;
anchors.fill: parent;
ColumnLayout {
id: col_layout;
Rectangle {color:'green'; width:100; height: 100}
Rectangle {color:'red'; width:100; height: 100;
Popup{
id: popup;
modal: true;
visible: true;
Rectangle{ color:'blue'; width:200; height: 200; }
}
}
}
MouseArea {
anchors.fill: parent;
onClicked: {
popup.open();
popup.visible = true;
}
}
}
}

这会产生(蓝色 Rectangle 是模态内容):

enter image description here

我必须在 ApplicationWindow 的全局范围内放置一个 Popup 还是有一些方法可以实例化和控制 Popup一些子 Item 或模块?

我已经尝试将 Popupparent 属性设置为 root 但无济于事。我真的很想避免将所有可能的弹出窗口都塞进根 ApplicationWindow

最佳答案

您不能将 Popup 的父级设置为 root,因为 root 不是 Item -类型。因此它不能是parent

但是,您可以将它作为 root.contentItem 的父级。

因为您可能会在其他文件中声明 Popup,因此可能会隐藏 id: root,因此我会投票赞成使用附加属性 ApplicationWindow 相反,如果您使用它,它是可用的。

Popup {
id: popup;
modal: true;
visible: true;
parent: ApplicationWindow.contentItem // This will do the trick
Rectangle{ color:'blue'; width:200; height: 200; }
}

关于qt - 如何将 Popup 添加到嵌套项目内的根 ApplicationWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44684135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com