Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 恢复父级时工具显示得太快_C++_Windows_Qt_User Interface - Fatal编程技术网

C++ 恢复父级时工具显示得太快

C++ 恢复父级时工具显示得太快,c++,windows,qt,user-interface,C++,Windows,Qt,User Interface,我有一个qt应用程序窗口,其中有几个子部件是qt::Tool窗口 当我最小化窗口,然后在windows 7上还原时,子窗口小部件会立即出现,但父窗口不会因为动画而出现 有没有办法防止这种行为并使子窗口出现在主窗口之后?为什么不在主窗口恢复时隐藏工具窗口?您可以使用这段代码并根据自己的需要进行调整: void MainWindow::changeEvent( QEvent* e ) { if ( e->type() == QEvent::WindowStateChange ) {

我有一个qt应用程序窗口,其中有几个子部件是qt::Tool窗口

当我最小化窗口,然后在windows 7上还原时,子窗口小部件会立即出现,但父窗口不会因为动画而出现


有没有办法防止这种行为并使子窗口出现在主窗口之后?

为什么不在主窗口恢复时隐藏工具窗口?您可以使用这段代码并根据自己的需要进行调整:

void MainWindow::changeEvent( QEvent* e )
{
  if ( e->type() == QEvent::WindowStateChange )
  {
    QWindowStateChangeEvent* event = 
        static_cast< QWindowStateChangeEvent* >( e );
    if ( event->oldState() & Qt::WindowMinimized ) {
      qDebug() << "The Window has been restored!";
    }
    else if ( (event->oldState() == Qt::WindowNoState) && 
              (this->windowState() == Qt::WindowMaximized) ) {
      qDebug() << "the window has been Maximized!";
    }
  }
}

希望有帮助

此行为取决于窗口管理器。最好不要试图改变它。为什么短时间的延迟真的很重要?因为恢复过程看起来很难看,所以我希望应用程序表现得尽可能好。计时器和自定义透明度是解决这个问题的最后手段,我甚至更喜欢一些winapi消息捕获,因为这会更好,更容易从跨平台代码中分离出来。我已经用延迟显示小部件解决了这个问题,似乎这是唯一的选择。
setStyleSheet("background:transparent;");
setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::FramelessWindowHint);