Russian Qt Forum
Ноябрь 25, 2024, 15:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Получение значений группы разных виджетов  (Прочитано 1982 раз)
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, но как-то не получилось.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Февраль 22, 2013, 18:50 »

задай через словарь соответствие имен методов типам, потом через QMetaObject вызывай метод
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.082 секунд. Запросов: 22.