Russian Qt Forum

Qt => Общие вопросы => Тема начата: realbustard от Февраль 22, 2013, 17:18



Название: Получение значений группы разных виджетов
Отправлено: realbustard от Февраль 22, 2013, 17:18
На форме созданы виджеты разных типов, например:

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, но как-то не получилось.


Название: Re: Получение значений группы разных виджетов
Отправлено: kambala от Февраль 22, 2013, 18:50
задай через словарь соответствие имен методов типам, потом через QMetaObject вызывай метод