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)
|
: ElidingLabel(text, parent)
|
||||||
{
|
{
|
||||||
setType(type);
|
setType(type);
|
||||||
setMinimumHeight(iconSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
InfoLabel::InfoType InfoLabel::type() const
|
InfoLabel::InfoType InfoLabel::type() const
|
||||||
@@ -70,6 +69,13 @@ void InfoLabel::setFilled(bool filled)
|
|||||||
m_filled = 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)
|
static Utils::Theme::Color fillColorForType(InfoLabel::InfoType type)
|
||||||
{
|
{
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ public:
|
|||||||
void setType(InfoType type);
|
void setType(InfoType type);
|
||||||
bool filled() const;
|
bool filled() const;
|
||||||
void setFilled(bool filled);
|
void setFilled(bool filled);
|
||||||
|
QSize minimumSizeHint() const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *event) override;
|
void paintEvent(QPaintEvent *event) override;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QFormLayout>
|
||||||
#include <QLayout>
|
#include <QLayout>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
@@ -94,6 +95,13 @@ int main(int argc, char *argv[])
|
|||||||
stretching->setFilled(true);
|
stretching->setFilled(true);
|
||||||
mainLayout->addWidget(stretching, 2);
|
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 =
|
const QString lorem =
|
||||||
"Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt "
|
"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 "
|
"ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
|
||||||
|
|||||||
Reference in New Issue
Block a user