【问题标题】:Qt Layouts for 3 panels, all vertically expanding to fill用于 3 个面板的 Qt 布局,全部垂直扩展以填充
【发布时间】:2012-12-09 12:04:27
【问题描述】:

我对桌面 GUI 开发比较陌生。

我正在尝试获得一个具有 3 个平行垂直面板的框架,所有面板都垂直扩展以填充窗口。

我希望前两个面板不是灵活的,而是具有固定大小。

例如:

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

如何获得此布局?我尝试过网格、垂直、水平,但我认为我得到了所有的意大利面条式和困惑。

谢谢。

【问题讨论】:

    标签: c++ qt pyqt pyside


    【解决方案1】:

    你需要一个

    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();
    }
    

    还有截图:

    【讨论】:

    • 谢谢@Kikohs!!优质的帮助。
    猜你喜欢
    • 2021-01-08
    • 2016-04-29
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多