Qt5.3中qml ApplicationWindow设置窗口无边框问题
2014-08-06 19:14
585 查看
这个版本的qt在这里有点bug。。
设置ApplicationWindow的flags属性为Qt.FramelessWindowHint的确可以使程序无边框,但是同时程序在任务栏的图标也没了。
看文档发现 ApplicationWindow 是由 QQuickWindow 实现的,QQuickWindow 又继承于 QWindw。
直接创建一个QWindow对象实验了一下,代码如下
编译运行竟然连个窗口都没有,后来我又改了改代码,如下:
把window.setFlags( Qt::FramelessWindowHint );这句放到调用show()之后就一切正常了,任务栏上的图标不会消失了
但是,bug来了,程序退出之后任务栏的图标不会随之消失,必须用鼠标点击一下或者等一会才会消失,其他问题倒是还没发现
现在知道了在窗口显示之后再设置flags就好了,于是我在qml中加了一个定时器,时间为1毫秒,running为ture,在触发定时器之后再设置flags。
1毫秒的延时窗口肯定已经显示出来了,这时候再设置flags就正常了。
设置ApplicationWindow的flags属性为Qt.FramelessWindowHint的确可以使程序无边框,但是同时程序在任务栏的图标也没了。
看文档发现 ApplicationWindow 是由 QQuickWindow 实现的,QQuickWindow 又继承于 QWindw。
直接创建一个QWindow对象实验了一下,代码如下
QWindow window; window.setFlags( Qt::FramelessWindowHint ); window.setWidget( 300 ); window.setHeight( 300 ); window.show();
编译运行竟然连个窗口都没有,后来我又改了改代码,如下:
QWindow window; window.setWidget( 300 ); window.setHeight( 300 ); window.show(); window.setFlags( Qt::FramelessWindowHint );
把window.setFlags( Qt::FramelessWindowHint );这句放到调用show()之后就一切正常了,任务栏上的图标不会消失了
但是,bug来了,程序退出之后任务栏的图标不会随之消失,必须用鼠标点击一下或者等一会才会消失,其他问题倒是还没发现
现在知道了在窗口显示之后再设置flags就好了,于是我在qml中加了一个定时器,时间为1毫秒,running为ture,在触发定时器之后再设置flags。
1毫秒的延时窗口肯定已经显示出来了,这时候再设置flags就正常了。
相关文章推荐
- Qt 技巧:去除对话框边框 + 设置窗口可移动和透明
- Qt关于设置子窗口样式表不生效问题
- WPF中设置了WindowStyle="None"后,窗口仍然有边框的解决方法
- 关于QT 无边框窗口移动问题
- Qt - QDialog,QWidget实现模态及非模态(模态Widget不能有父窗口,如果设置无边框就不能阻塞父窗口,但是可以强行设置指定Qt::Dialog,还可以setAttribute(Qt::WA_ShowModal),很多讲究)good
- Qt 技巧:去除对话框边框 + 设置窗口可移动和透明
- Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)
- Qt 中设置窗口边框的圆角
- Qt中设置QML窗体无边框和背景透明
- Qt 之 设置窗口边框的圆角
- Qt/QML 窗口阴影边框实现
- js window.open 弹出窗口设置 UTF-8编码的问题解决
- QML实现的无边框窗口的拉伸,拖拽,基本解决闪烁严重问题
- Qt/QML窗口阴影边框实现
- Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)
- Qt无边框窗口, 设置最小化后, 再还原,所有子控件不刷新
- Qt自定义样式/无边框窗口/子窗口模态/非模态问题
- 第二个小问题:QT中MainWindow中style sheet设置背景图片继承问题
- Qt自定义弹窗屏蔽父窗口(QWidget设置setWindowModality(Qt::ApplicationModal);以后再show)
- Qt for Symbian中如何添加头文件路径和打包文件|Qt 窗口外边框设置。