【发布时间】:2013-09-30 19:02:53
【问题描述】:
我正在尝试撤消我应用上的Stay on Top of Windows 设置。我认为通过执行一些按位操作,我将能够撤消设置,但它仍然显示在所有其他窗口的顶部。
void showKioskMode(){
//if(windowFlags()&Qt::WindowStaysOnTopHint){
if(ui->pushButton_3->text().compare("No Kiosk") == 0){
//showNormal();
Qt::WindowFlags flags = windowFlags();
flags &= ~Qt::WindowStaysOnTopHint;
setWindowFlags(flags);
ui->pushButton_3->setText("Yes Kiosk");
}
else{
//showFullScreen();
Qt::WindowFlags flags = windowFlags();
setWindowFlags(flags | Qt::WindowStaysOnTopHint);
ui->pushButton_3->setText("No Kiosk");
}
show();
}
我已经检查过 if-body 正在执行,但即使它们有焦点,该窗口仍然始终位于所有其他窗口的顶部。
【问题讨论】:
-
@user2672165 这不是描述了弹出窗口小部件或对话框的解决方案吗?而且,它不会隐藏小部件吗?我只是希望它位于其他窗口的后面。
-
你对隐藏是正确的。您需要使用 QWidget::lower()。我只是在想这可能相关的方向,因为它说“这将在切换应用程序时隐藏帮助器小部件”。它也可以应用于任何其他小部件。例如。 popup_spec->hide() 可能是 this->lower()。
-
我认为(较低的功能)仅适用于父小部件堆栈上的所有小部件。这实际上适用于其他外部流程吗?我尝试通过按钮的 onClick 插槽调用 lower() 函数,但它没有将窗口发送到具有焦点的进程的后面或后面。
-
那么可能是 Qt 错误。
标签: c++ windows qt windows-7 qt5