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