我想禁用调整我的表单大小 - 这是我尝试过的。我已将表单的调整大小策略更改为以下 HorizontalPolicy:Fixed VerticalPloicy: Fixed
我也试过以下
Form *w = new Form();
w->setFixedSize(w->size());
w->show();
但是表单仍然可以通过拖动角来调整大小。有什么建议么 ?
这绝对是可能的。
首先你应该知道,在窗口实际显示之前它没有关于它的大小的信息——所以此时 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 的更改并没有帮助 - 至少在我的系统上,一个简单的小部件也可以做到这一点;)