关于QWidget可视区域的测试

2017-09-08 09:22:59  阅读 457 次 评论 0 条

    最近在做项目时需要使用窗口的可视区域,查找帮助文档发现QWidget提供了一个函数可以计算可见窗口不被其他窗口覆盖的近似区域。

函数声明: QRegion QWidget::visibleRegion()const. 但是在使用时发现时而有效时而无效。于是做了如下测试。

    在一个widget中添加一个QPushButton类型的子控件。再添加一个按钮连接信号,在对应的槽函数中显示widget的可视区域。

image.png

    从debug的信息可以看出,可视区域是整个widget。接着使用QTableWidget作为子控件做了同样的测试

image.png

    发现widget被覆盖了,可视区域如图中的4块。再接着测试QLabel,QLineEdit无遮盖效果。QTreeWidget、QListWidget有遮盖效果。

    再测试QTreeWidget、QListWidget和QTableWidget的基类QAbstractScrollArea,同样有遮盖效果。于是查看它的源码,发现它在初始化时调用了视口的setAutoFillBackground(true)函数。

image.png

    给QLabel、QLineEdit和QPushButton调用该函数后也具有遮盖效果。


    测试环境:Qt5.8.0

本文地址:http://fearlazy.com/index.php/post/27.html
版权声明:本文为原创文章,版权归 fearlazy 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?