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的 位置就好控制了。