0

我有一个 qt 应用程序,带有几个子小部件的窗口是 Qt::Tool 窗口。

当我最小化窗口然后在 Windows 7 上恢复时,子小部件会立即出现,但父窗口不是因为动画。

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

4

1 回答 1

1

为什么不在主窗口恢复时隐藏工具窗口?您可以使用这段代码并使其适应您的需求:

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!";
    }
  }
}

例如,您可以启动一个计时器一段时间,并将插槽连接到您的子工具窗口,使它们按您的意愿显示。

您还可以在子工具窗口中使用透明度,并模拟主窗口效果。

我记得,这样的事情会做:

setStyleSheet("background:transparent;");
setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::FramelessWindowHint);

希望有帮助!

于 2012-06-05T07:22:28.870 回答