From 44ff85cb1b5173adfb611e36854400e3c2174bee Mon Sep 17 00:00:00 2001 From: Sergey Levin Date: Wed, 1 Dec 2021 17:18:03 +0300 Subject: [PATCH] Change QLabel from StringAspect to ElidingLabel ElidingLabel with elided mode set other than Qt::ElideNone will not show in case QFormLayout has QFormLayout::ExpandingFieldsGrow field growth policy Change-Id: I26db57fbeb2c921e054cf7dc18229ebddcb04530 Reviewed-by: Eike Ziller --- src/libs/utils/aspects.cpp | 16 ++++++++++++++-- src/libs/utils/aspects.h | 1 + src/libs/utils/layoutbuilder.cpp | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index f4c09ab1327..8118d11ea79 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -639,11 +639,12 @@ public: std::function m_displayFilter; std::unique_ptr m_checker; + Qt::TextElideMode m_elideMode = Qt::ElideNone; QString m_placeHolderText; QString m_historyCompleterKey; PathChooser::Kind m_expectedKind = PathChooser::File; EnvironmentChange m_environmentChange; - QPointer m_labelDisplay; + QPointer m_labelDisplay; QPointer m_lineEditDisplay; QPointer m_pathChooserDisplay; QPointer m_textEditDisplay; @@ -935,6 +936,16 @@ void StringAspect::setPlaceHolderText(const QString &placeHolderText) d->m_textEditDisplay->setPlaceholderText(placeHolderText); } +/*! + Sets \a elideMode as label elide mode. +*/ +void StringAspect::setElideMode(Qt::TextElideMode elideMode) +{ + d->m_elideMode = elideMode; + if (d->m_labelDisplay) + d->m_labelDisplay->setElideMode(elideMode); +} + /*! Sets \a historyCompleterKey as key for the history completer settings for line edits and path chooser displays. @@ -1144,7 +1155,8 @@ void StringAspect::addToLayout(LayoutBuilder &builder) } break; case LabelDisplay: - d->m_labelDisplay = createSubWidget(); + d->m_labelDisplay = createSubWidget(); + d->m_labelDisplay->setElideMode(d->m_elideMode); d->m_labelDisplay->setTextInteractionFlags(Qt::TextSelectableByMouse); d->m_labelDisplay->setText(displayedString); d->m_labelDisplay->setToolTip(d->m_showToolTipOnLabel ? displayedString : toolTip()); diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index 9124bb2ddf6..0771dc65bf1 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -308,6 +308,7 @@ public: void setValidationFunction(const Utils::FancyLineEdit::ValidationFunction &validator); void setOpenTerminalHandler(const std::function &openTerminal); void setAutoApplyOnEditingFinished(bool applyOnEditingFinished); + void setElideMode(Qt::TextElideMode elideMode); void validateInput(); diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 6c76808177e..d82617ea463 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -111,7 +111,7 @@ static QLayout *createLayoutFromType(LayoutBuilder::LayoutType layoutType) switch (layoutType) { case LayoutBuilder::FormLayout: { auto formLayout = new QFormLayout; - formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); + formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); return formLayout; } case LayoutBuilder::GridLayout: {