From f3327475b92a2908adf1d436bdc1ea4237dc8911 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 14 May 2024 15:58:44 +0200 Subject: [PATCH] Gui: move to new-style connect() in createEditor() --- src/Gui/propertyeditor/PropertyItem.cpp | 112 +++++++++--------- src/Gui/propertyeditor/PropertyItem.h | 56 ++++----- .../propertyeditor/PropertyItemDelegate.cpp | 18 ++- src/Gui/propertyeditor/PropertyItemDelegate.h | 3 +- src/Mod/Fem/Gui/PropertyFemMeshItem.cpp | 4 +- src/Mod/Fem/Gui/PropertyFemMeshItem.h | 3 +- src/Mod/Mesh/Gui/PropertyEditorMesh.cpp | 4 +- src/Mod/Mesh/Gui/PropertyEditorMesh.h | 4 +- src/Mod/Part/Gui/PropertyEnumAttacherItem.cpp | 5 +- src/Mod/Part/Gui/PropertyEnumAttacherItem.h | 2 +- .../Gui/PropertyConstraintListItem.cpp | 4 +- .../Sketcher/Gui/PropertyConstraintListItem.h | 3 +- 12 files changed, 109 insertions(+), 109 deletions(-) diff --git a/src/Gui/propertyeditor/PropertyItem.cpp b/src/Gui/propertyeditor/PropertyItem.cpp index 5403db49fba2..6167dd4c1720 100644 --- a/src/Gui/propertyeditor/PropertyItem.cpp +++ b/src/Gui/propertyeditor/PropertyItem.cpp @@ -498,7 +498,7 @@ void PropertyItem::setValue(const QVariant& /*value*/) { } -QWidget* PropertyItem::createEditor(QWidget* /*parent*/, const QObject* /*receiver*/, const char* /*method*/) const +QWidget* PropertyItem::createEditor(QWidget* /*parent*/, const std::function& /*method*/) const { return nullptr; } @@ -512,7 +512,7 @@ QVariant PropertyItem::editorData(QWidget * /*editor*/) const return {}; } -QWidget* PropertyItem::createExpressionEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyItem::createExpressionEditor(QWidget* parent, const std::function& method) const { if(!isBound()) { return nullptr; @@ -520,7 +520,7 @@ QWidget* PropertyItem::createExpressionEditor(QWidget* parent, const QObject* re auto le = new ExpLineEdit(parent,true); le->setFrame(false); le->setReadOnly(true); - QObject::connect(le, SIGNAL(textChanged(QString)), receiver, method); + QObject::connect(le, &ExpLineEdit::textChanged, method); le->bind(getPath()); le->setAutoApply(autoApply()); return le; @@ -849,12 +849,12 @@ void PropertyStringItem::setValue(const QVariant& value) } } -QWidget* PropertyStringItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyStringItem::createEditor(QWidget* parent, const std::function& method) const { auto le = new ExpLineEdit(parent); le->setFrame(false); le->setReadOnly(isReadOnly()); - QObject::connect(le, SIGNAL(textChanged(QString)), receiver, method); + QObject::connect(le, &ExpLineEdit::textChanged, method); if(isBound()) { le->bind(getPath()); le->setAutoApply(autoApply()); @@ -900,12 +900,16 @@ void PropertyFontItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyFontItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyFontItem::createEditor(QWidget* parent, const std::function& method) const { auto cb = new QComboBox(parent); cb->setFrame(false); cb->setDisabled(isReadOnly()); - QObject::connect(cb, SIGNAL(activated(QString)), receiver, method); +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) + QObject::connect(cb, qOverload(&QComboBox::activated), method); +#else + QObject::connect(cb, &QComboBox::textActivated, method); +#endif return cb; } @@ -932,11 +936,10 @@ QVariant PropertyFontItem::editorData(QWidget *editor) const PROPERTYITEM_SOURCE(Gui::PropertyEditor::PropertySeparatorItem) -QWidget* PropertySeparatorItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertySeparatorItem::createEditor(QWidget* parent, const std::function& method) const { - Q_UNUSED(parent); - Q_UNUSED(receiver); - Q_UNUSED(method); + Q_UNUSED(parent); + Q_UNUSED(method); return nullptr; } @@ -967,12 +970,12 @@ void PropertyIntegerItem::setValue(const QVariant& value) } } -QWidget* PropertyIntegerItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyIntegerItem::createEditor(QWidget* parent, const std::function& method) const { auto sb = new Gui::IntSpinBox(parent); sb->setFrame(false); sb->setReadOnly(isReadOnly()); - QObject::connect(sb, SIGNAL(valueChanged(int)), receiver, method); + QObject::connect(sb, qOverload(&Gui::IntSpinBox::valueChanged), method); if (isBound()) { sb->bind(getPath()); @@ -1034,12 +1037,12 @@ void PropertyIntegerConstraintItem::setValue(const QVariant& value) } } -QWidget* PropertyIntegerConstraintItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyIntegerConstraintItem::createEditor(QWidget* parent, const std::function& method) const { auto sb = new Gui::IntSpinBox(parent); sb->setFrame(false); sb->setReadOnly(isReadOnly()); - QObject::connect(sb, SIGNAL(valueChanged(int)), receiver, method); + QObject::connect(sb, qOverload(&Gui::IntSpinBox::valueChanged), method); if (isBound()) { sb->bind(getPath()); @@ -1131,13 +1134,13 @@ void PropertyFloatItem::setValue(const QVariant& value) } } -QWidget* PropertyFloatItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyFloatItem::createEditor(QWidget* parent, const std::function& method) const { auto sb = new Gui::DoubleSpinBox(parent); sb->setFrame(false); sb->setDecimals(decimals()); sb->setReadOnly(isReadOnly()); - QObject::connect(sb, SIGNAL(valueChanged(double)), receiver, method); + QObject::connect(sb, qOverload(&Gui::DoubleSpinBox::valueChanged), method); if (isBound()) { sb->bind(getPath()); @@ -1201,7 +1204,7 @@ void PropertyUnitItem::setValue(const QVariant& value) } } -QWidget* PropertyUnitItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyUnitItem::createEditor(QWidget* parent, const std::function& method) const { auto infield = new Gui::QuantitySpinBox(parent); infield->setFrame(false); @@ -1215,7 +1218,7 @@ QWidget* PropertyUnitItem::createEditor(QWidget* parent, const QObject* receiver } - QObject::connect(infield, SIGNAL(valueChanged(double)), receiver, method); + QObject::connect(infield, qOverload(&Gui::QuantitySpinBox::valueChanged), method); return infield; } @@ -1304,13 +1307,13 @@ void PropertyFloatConstraintItem::setValue(const QVariant& value) } } -QWidget* PropertyFloatConstraintItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyFloatConstraintItem::createEditor(QWidget* parent, const std::function& method) const { auto sb = new Gui::DoubleSpinBox(parent); sb->setDecimals(decimals()); sb->setFrame(false); sb->setReadOnly(isReadOnly()); - QObject::connect(sb, SIGNAL(valueChanged(double)), receiver, method); + QObject::connect(sb, qOverload(&Gui::DoubleSpinBox::valueChanged), method); if (isBound()) { sb->bind(getPath()); @@ -1400,14 +1403,14 @@ void PropertyBoolItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyBoolItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyBoolItem::createEditor(QWidget* parent, const std::function& method) const { auto cb = new QComboBox(parent); cb->setFrame(false); cb->addItem(QLatin1String("false")); cb->addItem(QLatin1String("true")); cb->setDisabled(isReadOnly()); - QObject::connect(cb, SIGNAL(activated(int)), receiver, method); + QObject::connect(cb, qOverload(&QComboBox::activated), method); return cb; } @@ -1513,7 +1516,7 @@ void PropertyVectorItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyVectorItem::createEditor(QWidget* parent, const QObject* /*receiver*/, const char* /*method*/) const +QWidget* PropertyVectorItem::createEditor(QWidget* parent, const std::function& /*method*/) const { auto le = new VectorLineEdit(decimals(), parent); le->setFrame(false); @@ -1735,10 +1738,10 @@ void PropertyVectorListItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyVectorListItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyVectorListItem::createEditor(QWidget* parent, const std::function& method) const { auto pe = new VectorListWidget(decimals(), parent); - QObject::connect(pe, SIGNAL(valueChanged(QVariant)), receiver, method); + QObject::connect(pe, &VectorListWidget::valueChanged, method); pe->setDisabled(isReadOnly()); return pe; } @@ -1823,7 +1826,7 @@ void PropertyVectorDistanceItem::setEditorData(QWidget *editor, const QVariant& le->setText(toString(data).toString()); } -QWidget* PropertyVectorDistanceItem::createEditor(QWidget* parent, const QObject* /*receiver*/, const char* /*method*/) const +QWidget* PropertyVectorDistanceItem::createEditor(QWidget* parent, const std::function& /*method*/) const { auto le = new VectorLineEdit(decimals(), parent); le->setFrame(false); @@ -2045,7 +2048,7 @@ void PropertyMatrixItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyMatrixItem::createEditor(QWidget* parent, const QObject* /*receiver*/, const char* /*method*/) const +QWidget* PropertyMatrixItem::createEditor(QWidget* parent, const std::function& /*method*/) const { auto le = new QLineEdit(parent); le->setFrame(false); @@ -2570,10 +2573,9 @@ void PropertyRotationItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyRotationItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyRotationItem::createEditor(QWidget* parent, const std::function& method) const { Q_UNUSED(parent) - Q_UNUSED(receiver) Q_UNUSED(method) return nullptr; } @@ -2891,10 +2893,10 @@ void PropertyPlacementItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyPlacementItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyPlacementItem::createEditor(QWidget* parent, const std::function& method) const { auto pe = new PlacementEditor(this->propertyName(), parent); - QObject::connect(pe, SIGNAL(valueChanged(QVariant)), receiver, method); + QObject::connect(pe, &PlacementEditor::valueChanged, method); // The Placement dialog only works if property is part of a DocumentObject bool readonly = isReadOnly(); @@ -3135,7 +3137,7 @@ QStringList PropertyEnumItem::getCommonModes() const return commonModes; } -QWidget* PropertyEnumItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyEnumItem::createEditor(QWidget* parent, const std::function& method) const { QStringList commonModes = getCommonModes(); if (commonModes.isEmpty()) { @@ -3149,7 +3151,7 @@ QWidget* PropertyEnumItem::createEditor(QWidget* parent, const QObject* receiver cb->setFrame(false); cb->setDisabled(isReadOnly()); cb->addItems(commonModes); - QObject::connect(cb, SIGNAL(activated(int)), receiver, method); + QObject::connect(cb, qOverload(&QComboBox::activated), method); return cb; } @@ -3167,7 +3169,7 @@ QWidget* PropertyEnumItem::createEditor(QWidget* parent, const QObject* receiver button->setText(action->data().toString()); Q_EMIT button->picked(); }); - QObject::connect(button, SIGNAL(picked()), receiver, method); + QObject::connect(button, &PropertyEnumButton::picked, method); return button; } @@ -3199,12 +3201,12 @@ PROPERTYITEM_SOURCE(Gui::PropertyEditor::PropertyStringListItem) PropertyStringListItem::PropertyStringListItem() = default; -QWidget* PropertyStringListItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyStringListItem::createEditor(QWidget* parent, const std::function& method) const { auto le = new Gui::LabelEditor(parent); le->setAutoFillBackground(true); le->setDisabled(isReadOnly()); - QObject::connect(le, SIGNAL(textChanged(QString)), receiver, method); + QObject::connect(le, &Gui::LabelEditor::textChanged, method); return le; } @@ -3278,13 +3280,13 @@ PROPERTYITEM_SOURCE(Gui::PropertyEditor::PropertyFloatListItem) PropertyFloatListItem::PropertyFloatListItem() = default; -QWidget* PropertyFloatListItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyFloatListItem::createEditor(QWidget* parent, const std::function& method) const { auto le = new Gui::LabelEditor(parent); le->setAutoFillBackground(true); le->setInputType(Gui::LabelEditor::Float); le->setDisabled(isReadOnly()); - QObject::connect(le, SIGNAL(textChanged(QString)), receiver, method); + QObject::connect(le, &Gui::LabelEditor::textChanged, method); return le; } @@ -3353,13 +3355,13 @@ PROPERTYITEM_SOURCE(Gui::PropertyEditor::PropertyIntegerListItem) PropertyIntegerListItem::PropertyIntegerListItem() = default; -QWidget* PropertyIntegerListItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyIntegerListItem::createEditor(QWidget* parent, const std::function& method) const { auto le = new Gui::LabelEditor(parent); le->setAutoFillBackground(true); le->setInputType(Gui::LabelEditor::Integer); le->setDisabled(isReadOnly()); - QObject::connect(le, SIGNAL(textChanged(QString)), receiver, method); + QObject::connect(le, &Gui::LabelEditor::textChanged, method); return le; } @@ -3469,11 +3471,11 @@ void PropertyColorItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyColorItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyColorItem::createEditor(QWidget* parent, const std::function& method) const { auto cb = new Gui::ColorButton( parent ); cb->setDisabled(isReadOnly()); - QObject::connect(cb, SIGNAL(changed()), receiver, method); + QObject::connect(cb, &Gui::ColorButton::changed, method); return cb; } @@ -3807,11 +3809,11 @@ void PropertyMaterialItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyMaterialItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyMaterialItem::createEditor(QWidget* parent, const std::function& method) const { auto cb = new Gui::ColorButton(parent); cb->setDisabled(isReadOnly()); - QObject::connect(cb, SIGNAL(changed()), receiver, method); + QObject::connect(cb, &Gui::ColorButton::changed, method); return cb; } @@ -4305,11 +4307,11 @@ void PropertyMaterialListItem::setValue(const QVariant& value) setPropertyValue(data); } -QWidget* PropertyMaterialListItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyMaterialListItem::createEditor(QWidget* parent, const std::function& method) const { auto cb = new Gui::ColorButton(parent); cb->setDisabled(isReadOnly()); - QObject::connect(cb, SIGNAL(changed()), receiver, method); + QObject::connect(cb, &Gui::ColorButton::changed, method); return cb; } @@ -4390,12 +4392,12 @@ QVariant PropertyFileItem::toolTip(const App::Property* prop) const return value(prop); } -QWidget* PropertyFileItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyFileItem::createEditor(QWidget* parent, const std::function& method) const { auto fc = new Gui::FileChooser(parent); fc->setAutoFillBackground(true); fc->setDisabled(isReadOnly()); - QObject::connect(fc, SIGNAL(fileNameSelected(QString)), receiver, method); + QObject::connect(fc, &Gui::FileChooser::fileNameSelected, method); return fc; } @@ -4448,13 +4450,13 @@ QVariant PropertyPathItem::toolTip(const App::Property* prop) const return value(prop); } -QWidget* PropertyPathItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyPathItem::createEditor(QWidget* parent, const std::function& method) const { auto fc = new Gui::FileChooser(parent); fc->setMode(FileChooser::Directory); fc->setAutoFillBackground(true); fc->setDisabled(isReadOnly()); - QObject::connect(fc, SIGNAL(fileNameSelected(QString)), receiver, method); + QObject::connect(fc, &Gui::FileChooser::fileNameSelected, method); return fc; } @@ -4500,12 +4502,12 @@ QVariant PropertyTransientFileItem::toolTip(const App::Property* prop) const return value(prop); } -QWidget* PropertyTransientFileItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyTransientFileItem::createEditor(QWidget* parent, const std::function& method) const { auto fc = new Gui::FileChooser(parent); fc->setAutoFillBackground(true); fc->setDisabled(isReadOnly()); - QObject::connect(fc, SIGNAL(fileNameSelected(QString)), receiver, method); + QObject::connect(fc, &Gui::FileChooser::fileNameSelected, method); return fc; } @@ -4728,7 +4730,7 @@ void PropertyLinkItem::setValue(const QVariant& value) setPropertyValue(DlgPropertyLink::linksToPython(links)); } -QWidget* PropertyLinkItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyLinkItem::createEditor(QWidget* parent, const std::function& method) const { if (propertyItems.empty()) { return nullptr; @@ -4736,7 +4738,7 @@ QWidget* PropertyLinkItem::createEditor(QWidget* parent, const QObject* receiver auto ll = new LinkLabel(parent, propertyItems.front()); ll->setAutoFillBackground(true); ll->setDisabled(isReadOnly()); - QObject::connect(ll, SIGNAL(linkChanged(QVariant)), receiver, method); + QObject::connect(ll, &LinkLabel::linkChanged, method); return ll; } diff --git a/src/Gui/propertyeditor/PropertyItem.h b/src/Gui/propertyeditor/PropertyItem.h index 7b6064ae2215..54d9ca860df3 100644 --- a/src/Gui/propertyeditor/PropertyItem.h +++ b/src/Gui/propertyeditor/PropertyItem.h @@ -135,12 +135,12 @@ class GuiExport PropertyItem : public QObject, public ExpressionBinding const App::Property* getFirstProperty() const; /** Creates the appropriate editor for this item and sets the editor to the value of overrideValue(). */ - virtual QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const; + virtual QWidget* createEditor(QWidget* parent, const std::function& method) const; virtual void setEditorData(QWidget *editor, const QVariant& data) const; virtual QVariant editorData(QWidget *editor) const; virtual bool isSeparator() const { return false; } - QWidget* createExpressionEditor(QWidget* parent, const QObject* receiver, const char* method) const; + QWidget* createExpressionEditor(QWidget* parent, const std::function& method) const; void setExpressionEditorData(QWidget *editor, const QVariant& data) const; QVariant expressionEditorData(QWidget *editor) const; @@ -233,7 +233,7 @@ class GuiExport PropertyStringItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -254,7 +254,7 @@ class GuiExport PropertyFontItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -276,7 +276,7 @@ class GuiExport PropertySeparatorItem : public PropertyItem PROPERTYITEM_HEADER bool isSeparator() const override { return true; } - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; int row() const override { return _row<0?PropertyItem::row():_row; @@ -296,7 +296,7 @@ class GuiExport PropertyIntegerItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -318,7 +318,7 @@ class GuiExport PropertyIntegerConstraintItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -356,7 +356,7 @@ class GuiExport PropertyFloatItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -378,7 +378,7 @@ class GuiExport PropertyUnitItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -430,7 +430,7 @@ class GuiExport PropertyFloatConstraintItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -496,7 +496,7 @@ class GuiExport PropertyBoolItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -521,7 +521,7 @@ class GuiExport PropertyVectorItem: public PropertyItem Q_PROPERTY(double z READ z WRITE setZ DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -600,7 +600,7 @@ class GuiExport PropertyVectorListItem : public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -626,7 +626,7 @@ class GuiExport PropertyVectorDistanceItem: public PropertyItem Q_PROPERTY(Base::Quantity z READ z WRITE setZ DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -686,7 +686,7 @@ class GuiExport PropertyMatrixItem: public PropertyItem Q_PROPERTY(double A44 READ getA44 WRITE setA44 DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -784,7 +784,7 @@ class GuiExport PropertyRotationItem: public PropertyItem Q_PROPERTY(Base::Vector3d Axis READ getAxis WRITE setAxis DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -842,7 +842,7 @@ class GuiExport PropertyPlacementItem: public PropertyItem Q_PROPERTY(Base::Vector3d Position READ getPosition WRITE setPosition DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -883,7 +883,7 @@ class GuiExport PropertyEnumItem: public PropertyItem Q_PROPERTY(QStringList Enum READ getEnum WRITE setEnum DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -926,7 +926,7 @@ class GuiExport PropertyStringListItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -948,7 +948,7 @@ class GuiExport PropertyFloatListItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -970,7 +970,7 @@ class GuiExport PropertyIntegerListItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -992,7 +992,7 @@ class GuiExport PropertyColorItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -1021,7 +1021,7 @@ class GuiExport PropertyMaterialItem : public PropertyItem Q_PROPERTY(float Transparency READ getTransparency WRITE setTransparency DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -1070,7 +1070,7 @@ class GuiExport PropertyMaterialListItem : public PropertyItem Q_PROPERTY(float Transparency READ getTransparency WRITE setTransparency DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -1117,7 +1117,7 @@ class GuiExport PropertyFileItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -1139,7 +1139,7 @@ class GuiExport PropertyPathItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -1161,7 +1161,7 @@ class GuiExport PropertyTransientFileItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; @@ -1229,7 +1229,7 @@ class GuiExport PropertyLinkItem: public PropertyItem Q_OBJECT PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget *editor, const QVariant& data) const override; QVariant editorData(QWidget *editor) const override; diff --git a/src/Gui/propertyeditor/PropertyItemDelegate.cpp b/src/Gui/propertyeditor/PropertyItemDelegate.cpp index 33a2c6995b3d..fe0568c8dd72 100644 --- a/src/Gui/propertyeditor/PropertyItemDelegate.cpp +++ b/src/Gui/propertyeditor/PropertyItemDelegate.cpp @@ -159,19 +159,26 @@ QWidget * PropertyItemDelegate::createEditor (QWidget * parent, const QStyleOpti FC_LOG("create editor " << index.row() << "," << index.column()); - QWidget* editor; + QWidget* editor = nullptr; expressionEditor = nullptr; userEditor = nullptr; if (parentEditor && parentEditor->isBinding()) { - expressionEditor = editor = childItem->createExpressionEditor(parent, this, SLOT(valueChanged())); + expressionEditor = editor = childItem->createExpressionEditor(parent, [this]() { + const_cast(this)->valueChanged(); // NOLINT + }); + propertyEditor = editor; } else { const auto &props = childItem->getPropertyData(); if (!props.empty() && props[0]->testStatus(App::Property::UserEdit)) { editor = userEditor = childItem->createPropertyEditorWidget(parent); + propertyEditor = editor; } else { - editor = childItem->createEditor(parent, this, SLOT(valueChanged())); + editor = childItem->createEditor(parent, [this]() { + const_cast(this)->valueChanged(); // NOLINT + }); + propertyEditor = editor; } } if (editor) { @@ -208,10 +215,9 @@ QWidget * PropertyItemDelegate::createEditor (QWidget * parent, const QStyleOpti void PropertyItemDelegate::valueChanged() { - QWidget* editor = qobject_cast(sender()); - if (editor) { + if (propertyEditor) { Base::FlagToggler<> flag(changed); - Q_EMIT commitData(editor); + Q_EMIT commitData(propertyEditor); } } diff --git a/src/Gui/propertyeditor/PropertyItemDelegate.h b/src/Gui/propertyeditor/PropertyItemDelegate.h index f5db04740665..fc26d2045d67 100644 --- a/src/Gui/propertyeditor/PropertyItemDelegate.h +++ b/src/Gui/propertyeditor/PropertyItemDelegate.h @@ -25,6 +25,7 @@ #define PROPERTYITEMDELEGATE_H #include +#include namespace Gui { namespace PropertyEditor { @@ -49,10 +50,10 @@ class PropertyItemDelegate : public QItemDelegate protected: bool eventFilter(QObject *, QEvent *) override; -public Q_SLOTS: void valueChanged(); private: + mutable QPointer propertyEditor; mutable QWidget *expressionEditor; mutable PropertyEditorWidget *userEditor = nullptr; mutable bool pressed; diff --git a/src/Mod/Fem/Gui/PropertyFemMeshItem.cpp b/src/Mod/Fem/Gui/PropertyFemMeshItem.cpp index 71f1228ce5fa..210060c52706 100644 --- a/src/Mod/Fem/Gui/PropertyFemMeshItem.cpp +++ b/src/Mod/Fem/Gui/PropertyFemMeshItem.cpp @@ -129,11 +129,9 @@ void PropertyFemMeshItem::setValue(const QVariant& value) } QWidget* PropertyFemMeshItem::createEditor(QWidget* parent, - const QObject* receiver, - const char* method) const + const std::function& method) const { Q_UNUSED(parent); - Q_UNUSED(receiver); Q_UNUSED(method); return nullptr; } diff --git a/src/Mod/Fem/Gui/PropertyFemMeshItem.h b/src/Mod/Fem/Gui/PropertyFemMeshItem.h index e90fcb86c89c..e55b324d5ddb 100644 --- a/src/Mod/Fem/Gui/PropertyFemMeshItem.h +++ b/src/Mod/Fem/Gui/PropertyFemMeshItem.h @@ -44,8 +44,7 @@ class PropertyFemMeshItem: public Gui::PropertyEditor::PropertyItem Q_PROPERTY(int Groups READ countGroups CONSTANT) PROPERTYITEM_HEADER - QWidget* - createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget* editor, const QVariant& data) const override; QVariant editorData(QWidget* editor) const override; diff --git a/src/Mod/Mesh/Gui/PropertyEditorMesh.cpp b/src/Mod/Mesh/Gui/PropertyEditorMesh.cpp index 9d0e4198c42c..69c6f46a7597 100644 --- a/src/Mod/Mesh/Gui/PropertyEditorMesh.cpp +++ b/src/Mod/Mesh/Gui/PropertyEditorMesh.cpp @@ -89,11 +89,9 @@ void PropertyMeshKernelItem::setValue(const QVariant& value) } QWidget* PropertyMeshKernelItem::createEditor(QWidget* parent, - const QObject* receiver, - const char* method) const + const std::function& method) const { Q_UNUSED(parent); - Q_UNUSED(receiver); Q_UNUSED(method); return nullptr; } diff --git a/src/Mod/Mesh/Gui/PropertyEditorMesh.h b/src/Mod/Mesh/Gui/PropertyEditorMesh.h index 670272a3c8cb..3522e003ef3b 100644 --- a/src/Mod/Mesh/Gui/PropertyEditorMesh.h +++ b/src/Mod/Mesh/Gui/PropertyEditorMesh.h @@ -45,9 +45,7 @@ class MeshGuiExport PropertyMeshKernelItem: public Gui::PropertyEditor::Property PROPERTYITEM_HEADER // clang-format off - QWidget* createEditor(QWidget* parent, - const QObject* receiver, - const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; // clang-format on void setEditorData(QWidget* editor, const QVariant& data) const override; QVariant editorData(QWidget* editor) const override; diff --git a/src/Mod/Part/Gui/PropertyEnumAttacherItem.cpp b/src/Mod/Part/Gui/PropertyEnumAttacherItem.cpp index ba8d38b0b3a1..4907910d5d48 100644 --- a/src/Mod/Part/Gui/PropertyEnumAttacherItem.cpp +++ b/src/Mod/Part/Gui/PropertyEnumAttacherItem.cpp @@ -42,10 +42,11 @@ PROPERTYITEM_SOURCE(PartGui::PropertyEnumAttacherItem) PropertyEnumAttacherItem::PropertyEnumAttacherItem() = default; -QWidget* PropertyEnumAttacherItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const +QWidget* PropertyEnumAttacherItem::createEditor(QWidget* parent, + const std::function& method) const { Gui::LabelButton* modeEditor = new Gui::LabelButton(parent); - QObject::connect(modeEditor, SIGNAL(valueChanged(const QVariant &)), receiver, method); + QObject::connect(modeEditor, &Gui::LabelButton::valueChanged, method); QObject::connect(modeEditor, &Gui::LabelButton::buttonClicked, this, &PropertyEnumAttacherItem::openTask); modeEditor->setDisabled(isReadOnly()); return modeEditor; diff --git a/src/Mod/Part/Gui/PropertyEnumAttacherItem.h b/src/Mod/Part/Gui/PropertyEnumAttacherItem.h index 65715b880600..b409db84fa3c 100644 --- a/src/Mod/Part/Gui/PropertyEnumAttacherItem.h +++ b/src/Mod/Part/Gui/PropertyEnumAttacherItem.h @@ -40,7 +40,7 @@ class PartGuiExport PropertyEnumAttacherItem: public Gui::PropertyEditor::Proper public: PROPERTYITEM_HEADER - QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget* editor, const QVariant& data) const override; QVariant editorData(QWidget* editor) const override; diff --git a/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp b/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp index ba9a1ebca0c5..bad00d161bd4 100644 --- a/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp +++ b/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp @@ -369,10 +369,8 @@ void PropertyConstraintListItem::setValue(const QVariant& value) } QWidget* PropertyConstraintListItem::createEditor(QWidget* parent, - const QObject* receiver, - const char* method) const + const std::function& method) const { - Q_UNUSED(receiver); Q_UNUSED(method); QLineEdit* le = new QLineEdit(parent); le->setFrame(false); diff --git a/src/Mod/Sketcher/Gui/PropertyConstraintListItem.h b/src/Mod/Sketcher/Gui/PropertyConstraintListItem.h index 77b7ec29f841..bae8508c2824 100644 --- a/src/Mod/Sketcher/Gui/PropertyConstraintListItem.h +++ b/src/Mod/Sketcher/Gui/PropertyConstraintListItem.h @@ -38,8 +38,7 @@ class PropertyConstraintListItem: public Gui::PropertyEditor::PropertyItem ~PropertyConstraintListItem() override; void assignProperty(const App::Property* prop) override; - QWidget* - createEditor(QWidget* parent, const QObject* receiver, const char* method) const override; + QWidget* createEditor(QWidget* parent, const std::function& method) const override; void setEditorData(QWidget* editor, const QVariant& data) const override; QVariant editorData(QWidget* editor) const override;