【问题标题】:Minimizing borderless dialog issue最小化无边界对话框问题
【发布时间】:2018-04-24 13:09:02
【问题描述】:

我想最小化无边界模态对话框,使其留在任务栏中。问题是,对话框最小化到屏幕底部:

截图:

代码:

setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
setWindowModality(Qt::ApplicationModal);
this->setWindowState(Qt::WindowMinimized);

另外,这个对话框不是主窗口,所以我认为它应该在单击对话框中的最小化时将它们最小化,并且问题出现在另一个非无边框模式对话框中。

带有边框的最小化模式对话框的屏幕截图:

我在 Windows 10 上使用 Qt 5.9.2。如何解决此问题?提前致谢。

【问题讨论】:

  • 如果您的对话框有一个当前不可见的父窗口,则会发生这种情况。尝试创建没有父级的对话框,即setParent(nullptr)。 (这也意味着你需要自己删除)
  • @Felix 是的,我知道,这个问题只有在设置了父级时才会发生。删除父级时效果很好。我认为这是 Qt 中的错误?
  • 这是故意的,因为您的对话框没有自己的任务栏条目。因此,它以这种方式最小化。这是 Windows 上的每个设计,而不是 Qt 的错。例如,在 Linux 上,它确实会同时最小化两个窗口。所以对于 Windows,这是自然的行为
  • @Felix 好的。那么它不应该同时最小化Windows OS 上的两个窗口,例如Linux,或者这个窗口行为是硬编码在Windows 中的吗?谢谢。
  • 是的,它被硬编码到 Windows 中。 Qt 只是告诉操作系统“最小化窗口”,然后操作系统决定如何去做,这就是结果。如果你想要不同的东西,你必须自己编码。 (对最小化事件做出反应,隐藏对话框并最小化父窗口,反之亦然)。

标签: c++ qt windows-applications


【解决方案1】:

所以问题已通过删除父级或将其设置为 nullptr 得到解决。感谢@Felix 信息,这不是Qt 中的错误,它是Windows 的默认行为。

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2010-11-29
    相关资源
    最近更新 更多