禁用表单大小调整

时间:2013-05-02 22:40:11

标签: c++ qt

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

我也尝试了以下

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

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

1 个答案:

答案 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没有改变帮助 - 至少在我的系统上,一个简单的小部件也可以做到这一点;)