forked from qt-creator/qt-creator
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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 "
|
||||
|
||||
Reference in New Issue
Block a user