我怎么知道我的Widget是被其他应用程序遮挡还是被用户看到?

时间:2011-08-31 15:42:17

标签: qt qt4 qwidget qtreewidget qt4.7

创建一个新窗口小部件,显示它,并将其隐藏在另一个应用程序后面。

  

有没有办法确定小部件是否对用户可见?   例如,如果有两个应用程序正在运行并且对用户可见(显然只有一个应用程序具有焦点且处于活动状态)但两者都可见

我对此感兴趣的原因是因为我的窗口小部件有一个调用setText()的treewidget(这是非常昂贵的)所以我想通过仅在树形件对用户可见时更新才能优化性能。

  

但总的来说,我想知道是否有一种方法可以找到“如果小部件对用户是否可见”。

感谢您提出任何建议和选择。

3 个答案:

答案 0 :(得分:2)

我认为这是一个预期的行为,因为它取决于窗口管理器(如果我没有记错)根据它们的位置绘制窗口,z-index,......所以Qt lib无关那个。

如果您控制何时显示其他应用程序,您可以手动隐藏树状单元并在关闭其他应用程序时再次显示它?

否则,你应该尝试改进你的小部件,如果你需要帮助,你应该给我们一些代码:)

答案 1 :(得分:1)

你可能想要一些与焦点有关的东西。

http://doc.qt.io/archives/qt-4.7/qwidget.html#focus-prop

答案 2 :(得分:1)

你试过吗? QWidget::isActiveWindow()