Макеты Qt для 3 панелей, все по вертикали расширяются, чтобы заполнить

Я довольно новичок в разработке десктопного GUI.

Я пытаюсь получить рамку с 3 параллельными вертикальными панелями, все расширяющиеся вертикально, чтобы заполнить окно.

Я хочу, чтобы первые две панели были не гибкими, а фиксированного размера.

Пример:

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

Как я могу получить этот макет? Я пробовал Grid, Vertical, Horizontal, но я думаю, что я все понял, как спагетти, и запутался.

Спасибо.

3

Решение

Тебе необходимо

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

И скриншот:

введите описание изображения здесь

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]