2013-05-02 78 views
0

我想禁用调整表单大小 - 这是我所尝试的。 我已经改变了形式的大小调整政策以下 Horizo​​ntalPolicy:固定 VerticalPloicy:固定禁用表单调整大小

我也曾尝试以下

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

但形式仍然得到通过拖动边角调整大小。有什么建议么 ?

+0

这真的很奇怪,你试过的东西应该可以工作。如果你正在Windows上开发,试试'w-> setWindowFlags(Qt :: MSWindowsFixedSizeDialogHint)' – 2013-05-02 22:45:19

+0

@NemanjaBoric不幸的是,这也不工作。也许是因为我在这里使用表单。相反,我应该使用dialog.I不认为窗体可以禁用调整大小 – Rajeshwar 2013-05-02 22:51:51

回答

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的帮助 - 在我的系统上最少使用一个简单的小部件也可以;)

+0

这仍然无法工作 – Rajeshwar 2013-05-03 01:49:10

+0

只是为了确保我刚刚创建了一个新的项目,新的默认QMainWindow,删除状态栏(具有单独的调整大小手柄),和在**'setupUi()'之后** **我添加了'setFixedSize(sizeHint());' - 并且我的窗口没有大小 - 当悬停边框时甚至没有显示大小光标。我的系统WIndows 7,Qt 4.7.4(32位)。 – 2013-05-03 01:58:52

+0

那么我使用的是VS2010的QT插件。创建了从QWidget Base Class派生的新UI类。将其从“QMainWindow”派生出来的主窗口。我的UI类继承自'QWidget' – Rajeshwar 2013-05-03 04:39:42