виджет с двумя (или более) макетом - PullRequest
4 голосов
/ 03 июля 2010

Мне нужен способ настроить виджеты внутри другого виджета с разными макетами ...

это похоже на то, что у нас виджет разделен на один макет на две части с метками, и этот виджет имеет другой виджет внутри смакет как на прикрепленном изображении альтернативный текст http://img713.imageshack.us/img713/8279/multilayoutwidget.png

, и у нас есть только 4 виджета: основной виджет, пометить один виджет, пометить два виджета, виджет кнопки, а для кнопки использовать один вертикальный и два горизонтальных растяжения

Может ли какое-нибудь тело указать мне на правильный путь сделать это?Спасибо.

1 Ответ

7 голосов
/ 03 июля 2010

Создайте QVBoxLayout, затем добавьте к нему два QHBoxLayout. В верхней части QHBoxLayout добавить метки, в нижней - растянуть, кнопку, растянуть.

пример окна http://img196.imageshack.us/img196/545/86911694.png

#include <QString>
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QLocale>

int main(int argc, char** argv){
    QApplication app(argc, argv);

    QWidget widget;

    QVBoxLayout* vLayout = new QVBoxLayout(&widget);
    QHBoxLayout* topLayout = new QHBoxLayout();
    QHBoxLayout* bottomLayout = new QHBoxLayout();
    QLabel* label1 = new QLabel(QObject::tr("Label1"));
    QLabel* label2 = new QLabel(QObject::tr("Label2"));
    label1->setAlignment(Qt::AlignCenter);
    label2->setAlignment(Qt::AlignCenter);
    QPushButton* btn1 = new QPushButton(QObject::tr("The Button!!!!"));
    topLayout->addWidget(label1);
    topLayout->addWidget(label2);
    bottomLayout->addStretch();
    bottomLayout->addWidget(btn1);
    bottomLayout->addStretch();
    vLayout->addLayout(topLayout);
    vLayout->addLayout(bottomLayout);

    widget.show();

    return app.exec();
}
...