Qt中在QMAinWindow內添加layout出現問題

    在QDialog的派生類中,添加Layout,可在創建Layout對象的同時指定其父窗口,但這在QMainWindow中行不通,可能會出現" ..已經設置過佈局.. "或者設置的Layout不能正常顯示。這是因爲基於主窗口的程序,默認已經有了自己的佈局管理器,所以再次設置Layout的話會失效。

    QMainWindow的中心控件是一個QWidget,可以通過setCentralWidget進行設置。若想在QMainWindow中添加 layout,需要通過將該Layout添加到一個QWidget對象中,然後將該佈局設置爲該空間的佈局,最後設置該控件爲QMainWindow的中心控件,步驟如下:

   

①創建一個QWidget實例,並將這個實例設置爲centralWidget:    

 

    QWidget*widget=newQWidget();
    this->setCentralWidget(widget);

 

 

②創建一個主佈局mainLayout,添加自己需要的控件,設置佈局屬性:

 


 
    QHBoxLayout*mainLayout=newQHBoxLayout;
mainLayout->setMargin(5);
    mainLayout->setSpacing(5);
    mainLayout->addWidget(list);
    mainLayout->addWidget(stack,0,Qt::AlignRight);
    mainLayout->setStretchFactor(list,1);
    mainLayout->setStretchFactor(stack,3);

 

 

③將widget的佈局設置爲mainLayout:

 


 

 
    centralWidget()->setLayout(mainLayout);

 

 


 

 

 

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