我想一个接一个地更改两个小部件的可见性。就我而言,我需要做一些处理,然后睡眠1秒钟并更改WidgetA的可见性。并在WidgetB中休眠1秒。这是我的代码。

...// do process D
 Sleep(1000);
 WidgetA->setVisible(true);
 Sleep(1000);
 WidgetB->setVisible(true);

但是结果不是我想要的。在进程D完成2秒钟后,WidgetA和WidgetB的可见性已同时更改。
  • 为什么WidgetA和WidgetB的可见性已同时更改?执行WidgetA->setVisible(true);后,它们是否实时更改?小部件何时更新?
  • 为什么超过2s?
  • 最佳答案

    void MainWindow::Initialize()
    {
        Sleep(1000);
        WidgetA->installEventFilter( this );
        WidgetA->setVisible( true );
    }
    
    bool MainWindow::eventFilter( QObject *object, QEvent *event )
    {
        if( object == WidgetA )
        {
            if( event->type() == QEvent::Show )
            {
                Sleep(1000);
                WidgetB->setVisible( true );
            }
        }
        return QMainWindow::eventFilter( object, event );
    }
    

    关于c++ - Qt中的窗口小部件可见性更改后,窗口小部件何时更新?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46210874/

    10-12 20:41