Utils: Don't store pointer to aspect label widget

Change-Id: Ieb8a04357fbdbc909fed79e33ef6a1d0cef2d721
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-09-19 14:50:55 +02:00
parent ada5aacedb
commit 399c2f92d6
4 changed files with 25 additions and 27 deletions

View File

@@ -77,7 +77,6 @@ public:
QString m_labelText;
QPixmap m_labelPixmap;
QIcon m_icon;
QPointer<QLabel> m_label; // Owned by configuration widget
QPointer<QAction> m_action; // Owned by us.
AspectContainer *m_container = nullptr; // Not owned by us.
@@ -225,26 +224,33 @@ void BaseAspect::setVisible(bool visible)
}
}
void BaseAspect::setupLabel()
QLabel *BaseAspect::createLabel()
{
QTC_ASSERT(!d->m_label, delete d->m_label);
if (d->m_labelText.isEmpty() && d->m_labelPixmap.isNull())
return;
d->m_label = new QLabel(d->m_labelText);
d->m_label->setTextInteractionFlags(d->m_label->textInteractionFlags()
| Qt::TextSelectableByMouse);
connect(d->m_label, &QLabel::linkActivated, this, [this](const QString &link) {
return nullptr;
auto label = new QLabel(d->m_labelText);
label->setTextInteractionFlags(label->textInteractionFlags() | Qt::TextSelectableByMouse);
connect(label, &QLabel::linkActivated, this, [this](const QString &link) {
emit labelLinkActivated(link);
});
if (!d->m_labelPixmap.isNull())
d->m_label->setPixmap(d->m_labelPixmap);
registerSubWidget(d->m_label);
label->setPixmap(d->m_labelPixmap);
registerSubWidget(label);
connect(this, &BaseAspect::labelTextChanged, label, [label, this] {
label->setText(d->m_labelText);
});
connect(this, &BaseAspect::labelPixmapChanged, label, [label, this] {
label->setPixmap(d->m_labelPixmap);
});
return label;
}
void BaseAspect::addLabeledItem(LayoutItem &parent, QWidget *widget)
{
setupLabel();
if (QLabel *l = label()) {
if (QLabel *l = createLabel()) {
l->setBuddy(widget);
parent.addItem(l);
parent.addItem(Span(std::max(d->m_spanX - 1, 1), LayoutItem(widget)));
@@ -260,8 +266,7 @@ void BaseAspect::addLabeledItem(LayoutItem &parent, QWidget *widget)
void BaseAspect::setLabelText(const QString &labelText)
{
d->m_labelText = labelText;
if (d->m_label)
d->m_label->setText(labelText);
emit labelTextChanged();
}
/*!
@@ -271,8 +276,7 @@ void BaseAspect::setLabelText(const QString &labelText)
void BaseAspect::setLabelPixmap(const QPixmap &labelPixmap)
{
d->m_labelPixmap = labelPixmap;
if (d->m_label)
d->m_label->setPixmap(labelPixmap);
emit labelPixmapChanged();
}
void BaseAspect::setIcon(const QIcon &icon)
@@ -291,11 +295,6 @@ QString BaseAspect::labelText() const
return d->m_labelText;
}
QLabel *BaseAspect::label() const
{
return d->m_label.data();
}
QString BaseAspect::toolTip() const
{
return d->m_tooltip;