轉載來自:http://www.cnblogs.com/oakentree/p/4433086.html
給QWidget或者QDialog設置佈局的時候方式很簡單。創建好一個佈局:mainLayout,然後不停地把各個控件往mainLayout裏面放,最後調用setLayout(mainLayout)就行了。
QMainWindow中使用這個方法的時候卻不管用,因爲QMainWindow是默認有layout的,所以再次設置layout會失效。
會出現這種提示:
QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout
這句話的意思是說,你已經給MainWindow設置過一個佈局了,再設置一個會出錯。
該如何給QMainWindow正確地設置佈局呢
要想QMainWidget創建佈局,合理的步驟應該是這樣的:
第一步創建一個QWidget實例,並將這個實例設置爲centralWidget:
然後創建一個主佈局mainLayout,並把所需要的所有控件都往裏面放(工具欄、菜單欄、狀態欄除外):
...
最一步就是將widget的佈局設置爲mainLayout
widget = new QWidget(); this->setCentralWidget(widget); cbox = new QCheckBox(this); cbox->setText("choose"); cbox->setChecked(false); button = new QPushButton(this); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(cbox); layout->addWidget(button); widget->setLayout(layout);