Utils: Fix setting of minimal height of InfoLabels in QFormLayout

Calling setMinimumHeight is not compatible with QFormLayout if the label
has multiple lines. Overriding minimumSizeHint on the other hand is.

Change-Id: Id2167b295620322cec75035d7cc7125cc3221c4d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Alessandro Portale
2019-12-21 22:58:24 +01:00
parent e34263853c
commit 25323be13d
3 changed files with 16 additions and 1 deletions

View File

@@ -45,7 +45,6 @@ InfoLabel::InfoLabel(const QString &text, InfoType type, QWidget *parent)
: ElidingLabel(text, parent)
{
setType(type);
setMinimumHeight(iconSize);
}
InfoLabel::InfoType InfoLabel::type() const
@@ -70,6 +69,13 @@ void InfoLabel::setFilled(bool filled)
m_filled = filled;
}
QSize InfoLabel::minimumSizeHint() const
{
QSize baseHint = ElidingLabel::minimumSizeHint();
baseHint.setHeight(qMax(baseHint.height(), iconSize));
return baseHint;
}
static Utils::Theme::Color fillColorForType(InfoLabel::InfoType type)
{
using namespace Utils;

View File

@@ -51,6 +51,7 @@ public:
void setType(InfoType type);
bool filled() const;
void setFilled(bool filled);
QSize minimumSizeHint() const override;
protected:
void paintEvent(QPaintEvent *event) override;

View File

@@ -24,6 +24,7 @@
****************************************************************************/
#include <QApplication>
#include <QFormLayout>
#include <QLayout>
#include <QMessageBox>
#include <QSettings>
@@ -94,6 +95,13 @@ int main(int argc, char *argv[])
stretching->setFilled(true);
mainLayout->addWidget(stretching, 2);
auto formLayout = new QFormLayout;
auto multiLine = new Utils::InfoLabel("Multi line<br/>in<br/>QFormLayout");
multiLine->setElideMode(Qt::ElideNone);
multiLine->setFilled(true);
formLayout->addRow("Label:", multiLine);
mainLayout->addLayout(formLayout);
const QString lorem =
"Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt "
"ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation "