【问题标题】:setFixedSize doesn't work as expectedsetFixedSize 不能按预期工作
【发布时间】:2013-05-28 23:14:35
【问题描述】:

我在 Windows 8 上使用使用 GCC 4.8 静态构建的最新稳定版 Qt 5。

我用一个按钮创建了一个简单的基于 QMainWindow 的应用程序。当我执行setFixedSize(minimumSizeHint()) 时,窗口会根据需要调整大小并且最大化按钮会被禁用,但是当我将指针悬停在边缘上时,我仍然可以看到双面箭头,并且可以通过垂直调整窗口大小14 像素。如果添加另一个按钮或状态栏 - 没有任何变化。如果我将 14 像素(或更多)添加到最小高度 - 它会真正固定,但我仍然可以看到箭头,这是不正常的。

这很奇怪,因为完全相同的代码(及其变体)在 PyQt4 中运行良好(请注意,我现在使用 C++)。我试过了:

  • layout()->setSizeConstraint(QLayout::SetFixedSize) - 相同的行为
  • setWindowFlags(Qt::MSWindowsFixedSizeDialogHint) - 窗口消失了

有什么办法解决这个问题?

UPD:我在添加另一个按钮时出错了(显然,这与添加状态栏不同) - 无法再调整窗口大小(不过,为什么要Qt 让我将窗口的高度设置为小于它喜欢的高度...),但箭头仍然存在。

UPD 2:找到 very similar question,但答案没有帮助(原因在问题本身的评论中描述)。

【问题讨论】:

  • 哇,我没有想到,我调用setWindowFlagsshow 的顺序可能很重要:) 如果我把它放在show 之前 - 就像一个魅力。如果您将此作为答案发布-我会接受。 The bug我提交的早一点。
  • 我将评论更改为答案。

标签: qt user-interface qt5


【解决方案1】:

sizegrip 的事情在 Qt 5 中似乎有所不同。不知道这是否是一个错误。我尝试为我的主窗口设置Qt::MSWindowsFixedSizeDialogHint 标志,它似乎对我来说工作正常。不过我在 Windows 7 上。

正如有关setWindowFlags 函数的文档中所说: Note: This function calls setParent() when changing the flags for a window, causing the widget to be hidden. You must call show() to make the widget visible again..

【讨论】:

    【解决方案2】:

    如果您希望它的行为与您在 PyQt4 中的行为相同,您可以使用 PyQt 项目使用的相同版本的 Qt 在 C++ 中编程:Qt 4.8.4

    http://qt-project.org/doc/qt-4.8/qwidget.html#setFixedSize

    希望对您有所帮助。

    【讨论】:

    猜你喜欢
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多