2012-07-17 3 views
3

Я пытаюсь найти сигнал, чтобы узнать, когда виджет виден или нет, я имею в виду, когда QWidget находится наверху рабочего стола или когда он скрывается под каким-то окном.QWidget onMinimize() onMaximize() signal

Мне также хотелось бы узнать сигнал, когда окно QWidget сведено к минимуму и когда оно будет восстановлено (не сведено к минимуму). Я пробовал следующий код, но когда я сворачиваю свое окно, окно закрывается и не находится в панели приложений.

void KGLWidget::changeEvent(QEvent *event) { 
     if (event->type() == QEvent::WindowStateChange) { 
      if (isMinimized() || !isVisible()) { 
       emit onHide(); 
       event->ignore(); 
       qDebug() << "NO SE VE"; 
       return; 
      } 
      if(isVisible()) { 
       emit onShow(); 
       event->ignore(); 
       qDebug() << "SI SE VE"; 
       return; 
      } 

     } 

    QWidget::changeEvent(event); 
    } 

Я также пробовал с event-> accept(), также без event-> ignore() и без возврата; но окно qwidget всегда закрывается.

Большое спасибо, я очень ценю ваше время и вашу помощь.

Заранее спасибо.

ответ

1

Вы говорите, что закрытие окна означает, что программа завершена? Код, который вы показали, не приведет к прекращению работы программы. Возможно, вы что-то сделали, чтобы программа зашла в слот, который подключается к сигналу onHide() и onShow().

Если вы хотите сделать что-то, когда виджет показать и скрыть, вы можете попытаться переопределить эти два обработчик события с

void QWidget::showEvent (QShowEvent * event) [virtual protected] 
void QWidget::hideEvent (QHideEvent * event) [virtual protected] 
Смежные вопросы