Trzy QLablel i środkowy ma ustawione verticalPolicy = QSizePolicy::Maximum
label1
: QSizePolicy(horizontalPolicy = QSizePolicy::Preferred, verticalPolicy = QSizePolicy::Preferred)
label2
:QSizePolicy(horizontalPolicy = QSizePolicy::Preferred, verticalPolicy = QSizePolicy::Maximum)
label3
:QSizePolicy(horizontalPolicy = QSizePolicy::Preferred, verticalPolicy = QSizePolicy::Preferred)
Dlaczego środkowy QLablel ma minimalną wysokość ?
Z jakiej perspektywy spojrzeć na sizePolicy aby zobaczyć Maximum ?
Bo umysł przyzwyczajony do rozwiązań Vcl.Controls.TAlign ;)
#include <QApplication>
#include <QVBoxLayout>
#include <QLabel>
#include <QSizePolicy>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
// troche koloru aby było wiadomo gdzie sie kończy i zaczyna QLabel
QString s = "";
s += "QWidget { font: bold 20px; background-color: red; border-style: outset; border-width: 2px; border-radius: 10px; border-color: beige; }" ; // background-color: #00FF00; font-size: 26px;
s += "QLabel { font: bold 20px; background-color: blue; }" ;
w.setStyleSheet(s);
QVBoxLayout *verticalLayout = new QVBoxLayout(&w);
QLabel *label1 = new QLabel;
label1->setText("label1");
qDebug()<< label1->sizePolicy();
QLabel *label2 = new QLabel;
label2->setText("label2 Vertical:QSizePolicy::Maximum");
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
label2->setSizePolicy(sizePolicy);
qDebug()<< label2->sizePolicy();
QLabel *label3 = new QLabel;
label3->setText("label3");
qDebug()<< label3->sizePolicy();
verticalLayout->addWidget(label1);
verticalLayout->addWidget(label2);
verticalLayout->addWidget(label3);
w.setLayout(verticalLayout);
w.resize(500,500);
w.show();
return a.exec();
}