На форме созданы виджеты разных типов, например:
QSpinBox
QDoubleSpinBox
MySpinBox
QComboBox
QCheckBox
......
Есть 2 метода: один получает текущее значение каждого виджета, другой устанавливает. Интерфейсы такие:
C++ (Qt)
QVariant value(QWidget* w);
void setValue(QWidget* w, QVariant value)
Чтобы определить тип виджета, делаю qobject_cast<WidgetType* >(w) .
Выглядит так:
C++ (Qt)
QVariant value(QWidget* w)
{
if (qobject_cast<WidgetType1* >(w))
{
...->value();
}
else if (qobject_cast<WidgetType2* >(w))
{
..->isChecked();
}
/// etc
}
Батарея if-ов уже приближается к 10, становится страшно. То же и в другом методе.
Возможно ли заюзать какое-нибудь унифицированное решение?
Я смотрел в сторону property, но как-то не получилось.