QML.关于qml窗口最小化后还原问题(window.visibility)

今天,在写程序的时候,发现qml最小化后,还原回去有点问题。

不同于QWidget的方式,qwidget一般会采用show和hide的方法,或者说是showFullScreen等等。但是我在qml中无法调用这个函数啊,我用的默认的qmlengine,并不能调用qwidget的方法,然后我一开始觉得是否可以通过visible的属性来控制,但是很显然不行,visible的方法对应的是show和hide。当我翻看文档后,我发现还有一个属性。

 qml的visibility相当于qwidget的setwindowflags(但是qml也有flags属性。。。这个暂时不深入)

注意:最小化后,qml的窗口仍然是可见的。这我不知道是为什么,使用visible属性是无效的。

 当我们最小化时,可以发现

window.visibility ->  Window.Minimized

所以,总结一下,当我们对qml进行最小化时,窗口仍然是可见的,改变的visibility的状态,所以当我们要让窗口恢复时,我们应该修改visibility为2

注意:官方文档指出了修改成Minimized时,我们需要指定窗口的大小,否则就是最大化全屏显示了。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QML中,可以通过`Window`组件来创建窗口,并且可以根据需要设置窗口的边框、最大化和最小化属性。 首先,在QML文件中导入`QtQuick.Controls`模块,以便使用`Window`组件: ```qml import QtQuick.Controls 2.15 ``` 然后,在QML中创建一个窗口,可以设置窗口的`visible`属性为`true`,让窗口显示出来: ```qml Window { width: 400 height: 300 visible: true } ``` 要为窗口添加边框,可以使用`Window`组件的`flags`属性,并设置`Qt.FramelessWindowHint`选项: ```qml Window { width: 400 height: 300 visible: true flags: Qt.FramelessWindowHint } ``` 这样可以去掉窗口的默认边框。 接下来,可以为窗口添加最大化和最小化按钮。可以使用`Item`组件作为窗口的标题栏,并在其中添加`Button`组件: ```qml Window { width: 400 height: 300 visible: true flags: Qt.FramelessWindowHint Item { id: titleBar height: 30 width: parent.width Button { width: 30 height: 30 text: "-" onClicked: window.showMinimized() anchors.right: parent.right } Button { width: 30 height: 30 text: "+" onClicked: window.showMaximized() anchors.right: minimizeBtn.left } } } ``` 在上面的代码中,我们在标题栏`titleBar`中添加了一个`Button`组件用于最小化窗口,并设置`window.showMinimized()`来实现最小化功能,另外一个`Button`组件用于最大化窗口,并设置`window.showMaximized()`来实现最大化功能。 通过这种方式,我们可以使用QML创建具有边框、最大化和最小化功能的窗口

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值