2013-05-02 75 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