forked from qt-creator/qt-creator
Utils: Don't store pointer to aspect label widget
Change-Id: Ieb8a04357fbdbc909fed79e33ef6a1d0cef2d721 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -77,7 +77,6 @@ public:
|
|||||||
QString m_labelText;
|
QString m_labelText;
|
||||||
QPixmap m_labelPixmap;
|
QPixmap m_labelPixmap;
|
||||||
QIcon m_icon;
|
QIcon m_icon;
|
||||||
QPointer<QLabel> m_label; // Owned by configuration widget
|
|
||||||
QPointer<QAction> m_action; // Owned by us.
|
QPointer<QAction> m_action; // Owned by us.
|
||||||
AspectContainer *m_container = nullptr; // Not 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())
|
if (d->m_labelText.isEmpty() && d->m_labelPixmap.isNull())
|
||||||
return;
|
return nullptr;
|
||||||
d->m_label = new QLabel(d->m_labelText);
|
|
||||||
d->m_label->setTextInteractionFlags(d->m_label->textInteractionFlags()
|
auto label = new QLabel(d->m_labelText);
|
||||||
| Qt::TextSelectableByMouse);
|
label->setTextInteractionFlags(label->textInteractionFlags() | Qt::TextSelectableByMouse);
|
||||||
connect(d->m_label, &QLabel::linkActivated, this, [this](const QString &link) {
|
connect(label, &QLabel::linkActivated, this, [this](const QString &link) {
|
||||||
emit labelLinkActivated(link);
|
emit labelLinkActivated(link);
|
||||||
});
|
});
|
||||||
if (!d->m_labelPixmap.isNull())
|
if (!d->m_labelPixmap.isNull())
|
||||||
d->m_label->setPixmap(d->m_labelPixmap);
|
label->setPixmap(d->m_labelPixmap);
|
||||||
registerSubWidget(d->m_label);
|
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)
|
void BaseAspect::addLabeledItem(LayoutItem &parent, QWidget *widget)
|
||||||
{
|
{
|
||||||
setupLabel();
|
if (QLabel *l = createLabel()) {
|
||||||
if (QLabel *l = label()) {
|
|
||||||
l->setBuddy(widget);
|
l->setBuddy(widget);
|
||||||
parent.addItem(l);
|
parent.addItem(l);
|
||||||
parent.addItem(Span(std::max(d->m_spanX - 1, 1), LayoutItem(widget)));
|
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)
|
void BaseAspect::setLabelText(const QString &labelText)
|
||||||
{
|
{
|
||||||
d->m_labelText = labelText;
|
d->m_labelText = labelText;
|
||||||
if (d->m_label)
|
emit labelTextChanged();
|
||||||
d->m_label->setText(labelText);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -271,8 +276,7 @@ void BaseAspect::setLabelText(const QString &labelText)
|
|||||||
void BaseAspect::setLabelPixmap(const QPixmap &labelPixmap)
|
void BaseAspect::setLabelPixmap(const QPixmap &labelPixmap)
|
||||||
{
|
{
|
||||||
d->m_labelPixmap = labelPixmap;
|
d->m_labelPixmap = labelPixmap;
|
||||||
if (d->m_label)
|
emit labelPixmapChanged();
|
||||||
d->m_label->setPixmap(labelPixmap);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseAspect::setIcon(const QIcon &icon)
|
void BaseAspect::setIcon(const QIcon &icon)
|
||||||
@@ -291,11 +295,6 @@ QString BaseAspect::labelText() const
|
|||||||
return d->m_labelText;
|
return d->m_labelText;
|
||||||
}
|
}
|
||||||
|
|
||||||
QLabel *BaseAspect::label() const
|
|
||||||
{
|
|
||||||
return d->m_label.data();
|
|
||||||
}
|
|
||||||
|
|
||||||
QString BaseAspect::toolTip() const
|
QString BaseAspect::toolTip() const
|
||||||
{
|
{
|
||||||
return d->m_tooltip;
|
return d->m_tooltip;
|
||||||
|
|||||||
@@ -207,6 +207,8 @@ signals:
|
|||||||
void labelLinkActivated(const QString &link);
|
void labelLinkActivated(const QString &link);
|
||||||
void checkedChanged();
|
void checkedChanged();
|
||||||
void enabledChanged();
|
void enabledChanged();
|
||||||
|
void labelTextChanged();
|
||||||
|
void labelPixmapChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool internalToBuffer();
|
virtual bool internalToBuffer();
|
||||||
@@ -216,8 +218,7 @@ protected:
|
|||||||
|
|
||||||
virtual void handleGuiChanged();
|
virtual void handleGuiChanged();
|
||||||
|
|
||||||
QLabel *label() const;
|
QLabel *createLabel();
|
||||||
void setupLabel();
|
|
||||||
void addLabeledItem(Layouting::LayoutItem &parent, QWidget *widget);
|
void addLabeledItem(Layouting::LayoutItem &parent, QWidget *widget);
|
||||||
|
|
||||||
void setDataCreatorHelper(const DataCreator &creator) const;
|
void setDataCreatorHelper(const DataCreator &creator) const;
|
||||||
|
|||||||
@@ -62,8 +62,7 @@ public:
|
|||||||
Utils::Environment environment;
|
Utils::Environment environment;
|
||||||
};
|
};
|
||||||
|
|
||||||
using Utils::BaseAspect::setupLabel;
|
using Utils::BaseAspect::createLabel;
|
||||||
using Utils::BaseAspect::label;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void baseEnvironmentChanged();
|
void baseEnvironmentChanged();
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ EnvironmentAspectWidget::EnvironmentAspectWidget(EnvironmentAspect *aspect)
|
|||||||
auto label = [aspect]() {
|
auto label = [aspect]() {
|
||||||
if (aspect->labelText().isEmpty())
|
if (aspect->labelText().isEmpty())
|
||||||
aspect->setLabelText(Tr::tr("Base environment for this run configuration:"));
|
aspect->setLabelText(Tr::tr("Base environment for this run configuration:"));
|
||||||
aspect->setupLabel();
|
return aspect->createLabel();
|
||||||
return aspect->label();
|
|
||||||
};
|
};
|
||||||
m_baseLayout->addWidget(label());
|
m_baseLayout->addWidget(label());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user