2014-02-14 73 views
1

我在QWidget內有QGridLayout。我一直在向此添加子女QGridLayouts。我希望QWidget根據子佈局所需的大小調整大小,但用戶無法調整大小。Qt QWidget禁用重新調整大於所需的最小大小

MainWindow.cpp(MainWindowQWidget繼承)

MainWindow::MainWindow(QWidget *parent) : 
    QWidget(parent) 
{ 
    QGridLayout *mainLayout = new QGridLayout(); 
    { 
     AAController *ac1 = new AAController("Ins1"); 
     AAController *ac2 = new AAController("Ins2"); 
     AAController *ac3 = new AAController("Ins3"); 

     mainLayout->addLayout(ac1, 0, 0); 
     mainLayout->addLayout(ac2, 0, 1); 
     mainLayout->addLayout(ac3, 1, 1); 
    } 
    setLayout(mainLayout); 
} 

AAController.cpp(AAControllerQGridLayout繼承)

AAController::AAController(const QString& instrument) 
    :_instrument(instrument) 
{ 
    _lblInstrument = new QLabel(_instrument); 
    _lblMismatchThreshold = new QLabel("Mismatch threshold : "); 
    _lblQuoteVolume = new QLabel("Quote volume : "); 
    _btnUpdateAlgo = new QPushButton("Update Algo"); 
    _spnMismatchThreshold = new QSpinBox(); 
    _spnQuoteVolume = new QSpinBox(); 

    this->addWidget(_lblInstrument, 0, 1, 1, 2, Qt::AlignCenter); 
    this->addWidget(_lblMismatchThreshold, 1, 0, 1, 2); 
    this->addWidget(_lblQuoteVolume, 2, 0, 1, 2); 
    this->addWidget(_btnUpdateAlgo, 3, 2, 1, 2); 
    this->addWidget(_spnMismatchThreshold, 1, 3); 
    this->addWidget(_spnQuoteVolume, 2, 3); 

    setSizeConstraint(SetFixedSize); 
} 

我得到的是這樣的:

但此刻我可以改變它的大小,如:

enter image description here

我想禁用此類調整大小。我該怎麼做呢?

+0

你的主窗口正好被設置爲固定大小。添加子項時,將其設置爲最小值,然後將其設置回固定大小。 –

+0

可能不會重複,因爲它沒有StatusBar也沒有QDialog。 –

+0

@SebastianLange:您的方法會產生一個固定大小的窗口。但大於上面第一張圖片中的最小值。 – nakiya

回答

2

在主窗口試試這個:

this->layout()->setSizeConstraint(QLayout::SetFixedSize); 

這是結果我得到:

enter image description here

+0

請看看上面的評論SebastianLange – nakiya

+0

@nakiya看我的編輯。這是你要找的結果嗎? – thuga

+0

是的,我在找什麼。謝謝。 – nakiya