我想禁用调整表单的大小 - 这是我尝试过的。 我已将表单的调整大小策略更改为以下内容 HorizontalPolicy:固定 VerticalPloicy:已修复
我也尝试了以下
Form *w = new Form();
w->setFixedSize(w->size());
w->show();
但是通过拖动角落仍可以调整表单的大小。有什么建议吗?
答案 0 :(得分:1)
绝对必须是可能的。
首先你应该知道,在窗口实际显示之前它没有大小的信息 - 所以这个大小可能会返回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没有改变帮助 - 至少在我的系统上,一个简单的小部件也可以做到这一点;)