【问题标题】:Clear a flag/hint in Qt在 Qt 中清除标志/提示
【发布时间】: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


【解决方案1】:

看起来这是一个错误。解决方法可以在以下线程中找到:

它通过 WinAPI 为 Windows 提供了单独的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多