繁体   English   中英

每个QT小部件都有“显示”信号吗?

[英]Does each QT widget have a 'show' signal?

我想在对话框显示打开时或从最小状态最大化或从屏幕移出时执行某些操作。

QT有这样的信号吗? 如果QT有一个定义的信号列表,我也不确定在哪里可以找到。

每个QT小部件都有“显示”信号吗?

如果你看一下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()

另请参阅show and hide event doc pages: http//doc.qt.io/qt-5/qshowevent-members.html http://doc.qt.io/qt-5/qhideevent.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM