【问题标题】:How to make a dialog window always on the front at my application level如何在我的应用程序级别使对话框窗口始终位于最前面
【发布时间】:2014-12-06 14:04:16
【问题描述】:

如何使 Qt 对话框窗口始终位于应用程序级别的顶部?

我想让一个对话窗口始终在前面,但在我的应用程序级别上始终记住在前面,即使我点击一个空白的地方,我也希望它只停留在我的应用程序的前面。

我曾尝试使用setWindowFlags(Qt::WindowStaysOnTopHint),但这会使对话框窗口始终位于桌面级别的顶部,但我希望它仅在我的应用程序级别位于顶部。

我该怎么做?

【问题讨论】:

  • 尝试在对话框中设置 Qt::Dialog 或 Qt::Window 标志(使用 setWindowsFlags 方法)
  • @Chernobyl:我在对话窗口中使用了setWindowFlags(Qt::Tool)
  • 那么你应该将Parent设置为这个窗口。 From doc:表示该小部件是一个工具窗口。工具窗口通常是一个小窗口,具有比通常的标题栏和装饰更小的窗口,通常用于工具按钮的集合。如果有父级,则工具窗口将始终保留在其顶部。如果没有父级,您也可以考虑使用 Qt::WindowStaysOnTopHint。
  • @Chernobyl:您的话正确,设置父级是问题(+1 供您发表评论)。谢谢

标签: c++ qt qt5 qdialog always-on-top


【解决方案1】:

您可以通过为对话框指定父级来实现此目的。子对话框始终位于其父窗口的顶部。

【讨论】:

    【解决方案2】:

    如果您不能像我一样将parent 发送到您的 dialog_window(基于代码条件),请使用标志。

    Dialog_dlg::Dialog_dlg(QWidget *parent)
        : QDialog(parent), ui(new Ui::Dialog_dlg)
    {
        ui->setupUi(this);
        setFixedSize(width(), height()); //for no maximaize
        setWindowFlag(Qt::WindowStaysOnTopHint);
    }
    

    我用过这个,对我很好。查看其他标志,测试它们,然后选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 2014-10-04
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多