Attempting to add QLayout "" to MainWindow "", which already has a layout

轉載來自: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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章