Имеет ли каждый виджет QT сигнал «показать»?
Если посмотреть на исходный код Qt, то вы найдете QWidget :: шоу будет слот:
public Q_SLOTS:
// Widget management functions
virtual void setVisible(bool visible);
void setHidden(bool hidden);
void show();
Щель в основном для нас, программистов, чтобы сделать нас способными соединиться с сигналами для конкретные цели, такие как нажатие кнопки, которую мы создали, делают что-то определенному виджету. Что касается Windows или Mac OS, у нас есть приложение, обслуживающее все события, поступающие из системы через цикл событий. И QWidget реагирует на все «сигналы» в виде системных событий и да, может, выполнить show()
или showMaximized()
или showMinimized
слотов.
Но я предполагаю, что вы хотите перегружать
virtual void showEvent(QShowEvent *);
virtual void hideEvent(QHideEvent *);
как:
void MyWidget::showEvent(QShowEvent *e)
{
if (isMaximized())
{
if (e->spontaneous())
{
// the author would like to know
// if the event is issued by the system
}
; // the action for maximized
}
else
{
; // the action for normal show
}
}
void MyWidget::hideEvent(QHideEvent *)
{
if (isMinimized())
{
; // the action for minimized
}
else
{
; // the action for hide
}
}
Для распознавания случаев, когда система работает виджет, мы можем использовать QEvent::spontaneous().
Пожалуйста, обратитесь, чтобы показать и скрыть DOC событие страницы: http://doc.qt.io/qt-5/qshowevent-members.html http://doc.qt.io/qt-5/qhideevent.html
Я не думаю, что это так, но вы можете переопределить QWidget :: showEvent (QShowEvent *), чтобы излучать свой собственный сигнал. –