Вы должны разделить вас дизайн на отдельные сегменты. Каждый сегмент может быть либо отдельным макетом, либо виджетами. В вас, например, я вижу следующие сегменты:
- Большой красный значок,
- Две метки: TextLabel и 06-Ноябрь-2014 ...
- Два этикетки сделать макет вертикальной коробки,
- Вертикальная компоновка коробки и большой красный значок образуют горизонтальную коробку,
- Маленький красный прямоугольник делает отдельный макет,
- Все макеты составляют основной макет.
Теперь давайте код этой композиции:
QLabel *largeRed = new QLabel(this); // Should set an image for this label
QLabel *lbl1 = new QLabel("06-November-2014...", this);
QLabel *lbl2 = new QLabel("TextLabel", this);
QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->addWidget(lbl1);
vLayout->addWidget(lbl2);
vLayout->addStretch();
QHBoxLayout *hLayout = new QHBoxLayout;
hLayout->addWidget(largeRed);
hLayout->addLayout(vLayout);
QLabel *smallRed = new QLabel(this); // Should set an image for this label
QHBoxLayout *hLayout2 = new QHBoxLayout;
hLayout2->addWidget(smallRed, 0, Qt::AlignRight);
QVBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->addLayout(hLayout);
mainLayout->addLayout(hLayout2);
[..]
Я поддержал ваш ответ, потому что он требует много времени, и на этот раз его нельзя опустить. Не имеет значения, что я был немного быстрее, потому что все это время вы форматируете свой код, чтобы сделать это лучше. – Chernobyl
Спасибо! это сделало вещи намного яснее. У меня только одна проблема с этим кодом. Как изменить интервал между lbl1 и lbl2. Прямо сейчас между этими двумя ярлыками слишком много места. – testus
@testus, добавьте 'vLayout-> addStretch();' вызовите vLayout. Пожалуйста, ознакомьтесь с обновленным образцом в моем ответе. Он будет содержать две метки вместе. – vahancho