QML的Popup遇到的坑

QML 的坑真的有点多,一个小小的Popup 遇到的坑这么多

坑1.  不要用老版本的Popup 

我用帮助小助手,随手找了个 Popup版本是 import QtQuick.Controls 2.14(Qt 推荐的)

发现编译后没有界面,没有任何有用的提示。

我以为代码写错了,于是随手拷贝了一些 帮助的例子代码

 Popup {
          id: popup
          x: 100
          y: 100
          width: 200
          height: 300
          modal: true
          focus: true
          closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
      }

编译后没有任何界面

于是我手动改成了 

import QtQuick.Controls 2.2

别问我为什么,是灵感,是灵感。

于是其他界面元素有了。但唯独Popup 没有。

于是我增加个 visible : true

别问我为什么,这是灵感,灵感。

才出现了 Popup。

QML 是个好东西,但灵感太多,太多。希望Qt 官方,改改帮助文档。 听说 Qt 帮助工程师退休了,估计他也闲不住。。

另外 在QML 的 Popup 是没办法 超越 Window 显示的。和Qt的 QDialog 是不一样的。

需要实现只能 重新开个 Window

=====

有时会遇到 Popup 要和某个控件anchor 的情况,可以写个透明的父类 Item 做对齐,然后 Popup.x = 0 即可,这样Popup的 位置就好控制了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QML中,Popup是一种弹出式界面控件的基本类型,可以与Window或ApplicationWindow一起使用。一个基本的Popup示例可以如下所示: ```qml import QtQuick.Window import QtQuick.Controls ApplicationWindow { id: window width: 400 height: 400 visible: true Button { text: "Open" onClicked: popup.open() } Popup { id: popup x: 100 y: 100 width: 200 height: 300 modal: true focus: true closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent } } ``` 默认情况下,按下Escape或Back键会关闭Popup。如果您希望自定义处理这些事件,有两种解决方案: 1. 将Popup的closePolicy属性设置为不包括Popup.CloseOnEscape的值,这样按下退出键时不会关闭Popup。 2. 处理Keys的shortcutOverride信号,并在Popup之前接受事件。 Popup的closePolicy属性是一个枚举类型,决定了弹出窗口关闭的情况。以下是closePolicy的可能取值: - Popup.NoAutoClose: Popup只会在手动指示时关闭。 - Popup.CloseOnPressOutside: 当鼠标在Popup外部按下时,Popup将关闭。 - Popup.CloseOnPressOutsideParent: 当鼠标在父级之外按下时,Popup将关闭。 - Popup.CloseOnReleaseOutside: 当鼠标离开Popup时,Popup将关闭。 - Popup.CloseOnReleaseOutsideParent: 当鼠标在父级之外释放时,Popup将关闭。 - Popup.CloseOnEscape: 当Popup具有焦点且按下退出键时,Popup将关闭。123 #### 引用[.reference_title] - *1* *2* [QML控件类型:Popup](https://blog.csdn.net/kenfan1647/article/details/122816454)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [QML Popup详解](https://blog.csdn.net/wzz953200463/article/details/129409996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值