Как я узнаю, что мой виджет скрыт другим приложением или виден пользователю? - PullRequest
3 голосов
/ 31 августа 2011

Создайте новый виджет, покажите его и скройте за другим приложением.

Есть ли способ узнать, виден ли виджет пользователю? Например, если у вас есть два запущенных приложения, видимых для пользователя (очевидно, только одно из них имеет фокус и активно), но оба видимы

Причина, по которой меня это интересует, заключается в том, что в моем виджете есть treewidget, который вызывает setText () (что очень дорого), поэтому я хочу оптимизировать производительность, обновляя его только тогда, когда treewidget виден пользователю.

Но в общем, я хотел бы знать, есть ли способ найти «виджет для пользователя или нет».

Спасибо за любые предложения и альтернативы.

Ответы [ 3 ]

2 голосов
/ 31 августа 2011

Я думаю, что это ожидаемое поведение, так как оконный менеджер (если я не ошибаюсь) рисует окна в соответствии с их положением, z-index, ... Так что библиотека Qt не имеет ничего общего с этим.

Если вы управляете отображением этого другого приложения, вы можете вручную скрыть древовидный виджет и показать его снова при закрытии другого приложения?

В противном случае, вы должны попытаться улучшить свой виджет, и если вам нужна помощь, вы должны дать нам код:)

1 голос
/ 01 сентября 2011

Вы пробовали QWidget :: isActiveWindow ()

1 голос
/ 01 сентября 2011

Возможно, вам нужно что-то, что связано с фокусом.

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

...