0

我想禁用调整我的表单大小 - 这是我尝试过的。我已将表单的调整大小策略更改为以下 Horizo​​ntalPolicy:Fixed VerticalPloicy: Fixed

我也试过以下

Form *w = new Form(); 
w->setFixedSize(w->size());
w->show();

但是表单仍然可以通过拖动角来调整大小。有什么建议么 ?

4

1 回答 1

2

这绝对是可能的。

首先你应该知道,在窗口实际显示之前它没有关于它的大小的信息——所以此时 size 可能会返回 0(或无效;或任何东西;))——它可能会弄乱整个大小,因此被默默拒绝. 我会尝试

Form *w = new Form();
//w->ensurePolished();
w->setFixedSize(w->sizeHint());
w->show();

无论如何,大小提示都应该具有正确的值。QWidget::ensurePolished()在这里可能是必要的,但我建议先尝试不使用它 - 如果它有效,为什么会使事情复杂化?

如果它仍然不起作用,那么您可以简单地尝试覆盖resizeEvent()并设置您的小部件的唯一正确尺寸,如果用户将其调整为其他任何尺寸。这仍然会给用户一种调整大小能力的错觉(光标在边缘发生变化等等),所以它确实是最后的选择。

编辑:

#include <QtGui/QApplication>
#include <QWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    w.setFixedSize(500,500);
    w.show();
    return a.exec();
}

结果:小部件无法调整大小。因此,对 QMainWindow 的更改并没有帮助 - 至少在我的系统上,一个简单的小部件也可以做到这一点;)

于 2013-05-02T23:49:51.893 回答