Utils: Use QPointer for registered aspect subwidgets

Amends 67a3d2e3d1.

Change-Id: I4807fd3409f66b10de5c95d7b07ddfdc7cf9174f
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2021-02-15 09:15:49 +01:00
parent b42fa1fb9b
commit 222e8c1286

View File

@@ -61,7 +61,7 @@ public:
bool m_enabled = true;
bool m_readOnly = true;
BaseAspect::ConfigWidgetCreator m_configWidgetCreator;
QList<QWidget *> m_subWidgets;
QList<QPointer<QWidget>> m_subWidgets;
};
} // Internal
@@ -125,8 +125,10 @@ bool BaseAspect::isVisible() const
void BaseAspect::setVisible(bool visible)
{
d->m_visible = visible;
for (QWidget *w : qAsConst(d->m_subWidgets))
for (QWidget *w : qAsConst(d->m_subWidgets)) {
QTC_ASSERT(w, continue);
w->setVisible(visible);
}
}
QString BaseAspect::toolTip() const
@@ -140,21 +142,26 @@ QString BaseAspect::toolTip() const
void BaseAspect::setToolTip(const QString &tooltip)
{
d->m_tooltip = tooltip;
for (QWidget *w : qAsConst(d->m_subWidgets))
for (QWidget *w : qAsConst(d->m_subWidgets)) {
QTC_ASSERT(w, continue);
w->setToolTip(tooltip);
}
}
void BaseAspect::setEnabled(bool enabled)
{
d->m_enabled = enabled;
for (QWidget *w : qAsConst(d->m_subWidgets))
for (QWidget *w : qAsConst(d->m_subWidgets)) {
QTC_ASSERT(w, continue);
w->setEnabled(enabled);
}
}
void BaseAspect::setReadOnly(bool readOnly)
{
d->m_readOnly = readOnly;
for (QWidget *w : qAsConst(d->m_subWidgets)) {
QTC_ASSERT(w, continue);
if (auto lineEdit = qobject_cast<QLineEdit *>(w))
lineEdit->setReadOnly(readOnly);
else if (auto textEdit = qobject_cast<QTextEdit *>(w))