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


給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);  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM