当对话框显示打开时或者从最小状态最大化或从屏幕移出时,我想要执行某些操作。
QT有这样的信号吗? 如果QT有一个定义的信号列表,我也不确定在哪里可以找到。
答案 0 :(得分:3)
每个QT小部件都有一个' show'信号φ
如果您查看Qt源代码,那么您会发现QWidget :: show是一个插槽:
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()。
另请参阅显示和隐藏活动文档页面: http://doc.qt.io/qt-5/qshowevent-members.html http://doc.qt.io/qt-5/qhideevent.html