2012-12-21 27 views
3

我对桌面GUI开发颇为陌生。3个面板的Qt布局,全部垂直扩展以填充

我想获得一个框架与3平行垂直面板,所有垂直扩展填充窗口。

我想要前两个面板不是灵活的,但有一个固定的大小。

例:

Fixed W. 
|========| 
############################ 
# # #    #^
#Fix.#Fix.#    # | 
#|--|#|--|# <--Flexible--> # Flexible vertically all 3 panels. 
# # #    # | 
# # #    # v 
############################ 

我怎样才能获得此布局?我尝试了网格,垂直,水平,但我想我把它全部弄成了意大利面和混乱。

谢谢。

回答

4

你需要一个

QHBoxLayout 

你只需要为您的固定部件固定宽度(左)。

这里是C++一个完整的工作示例:

#include <QApplication> 
#include <QtGui> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QFrame* w1 = new QFrame; 
    w1->setFixedWidth(100); 
    w1->setStyleSheet("background-color: red"); 

    QFrame* w2 = new QFrame; 
    w2->setFixedWidth(100); 
    w2->setStyleSheet("background-color: blue"); 

    QFrame* w3 = new QFrame; 
    w3->setStyleSheet("background-color: green"); 
    w3->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 

    QHBoxLayout* layout = new QHBoxLayout; 

    layout->addWidget(w1); 
    layout->addWidget(w2); 
    layout->addWidget(w3); 

    QWidget* app = new QWidget; 
    app->setLayout(layout); 
    app->show(); 
    return a.exec(); 
} 

,然后将截图:

enter image description here

+0

谢谢@Kikohs!优秀的品质帮助。 – Phil

+0

不客气:-) – Kikohs