@timao

Как избавиться от downcast'а в GUI?

Есть окно Window, на нём на разных вкладках около полусотни виджетов: QLineEdit, QDateEdit и QComboBox, а точнее собственные классы-наследники.

Суть окна Window:
Открываем окно -> запрос селект из mysql -> заполняем виджеты
Нажимаем кнопку Save -> запрос update в mysql -> закрываем окно

Чтобы не писать логику для каждого отдельного виджета хочется иметь что-то вроде QMap, где первое поле - столбец таблицы mysql. Всё это чтобы заполнять виджеты, сравнивать с первоначальным значением (QWidget::​setProperty), собирать запросы update как-то более централизованно. И код не дублировать.

Мало в жизни писал GUI, а с downcast'а проект начинать не хочется. Спасибо за внимание.

P.S. Кто не знаком с Qt:
QLineEdit, QDateEdit и QComboBox - наследники QWidget, всё это библиотечные GUI классы-виджеты.
QMap - аналог std::map
  • Вопрос задан
  • 256 просмотров
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
иметь что-то вроде QMap, где первое поле - столбец таблицы mysql.

а второе поле -- указатель на общий интерфейс, назовём его IUpdate, реализованный конкретными классами, знающими о том, как работать с конкретными классами виджетов. Или прямо самими классами виджетов.
Ответ написан
@jkrieger
Если я правильно понял задачу вам нужен QDataWidgetMapper.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Генерируйте ваши полсотни виджетов вместе с запросом, кто вам запрещает? Просто программа должна "знать" чуть больше о структуре данных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы