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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Занудный QTableWidgetItem  (Прочитано 3708 раз)
Alexandr Az
Гость
« : Октябрь 31, 2010, 19:22 »

Есть TableWidget, содержащий соответствующие итемы. Итемы  (QTableWidgetItem) хочется привязать к своим данным, т.е. чтобы  ссылались на объект. Как для меня ни странно, не нашёл в описания класса соответствующего поля - указателя, который я мог бы туда пхать (привет Delphi, property Tag)

Варианты решения проблемы:

1. Тупо и быстро - наследуем QTableWidgetItem и суём туда что хотим. Единственное - придётся делать приведение типов.
2. Подход в стиле QT - QVariant, определяем UserType, всякие Q_DECLARE_METATYPE и т.д.

Собственно вопрос:
  Как связать QVariant с отображением его в TableWidget? Если мы засунем туда (в QVariant), скажем число, оно отобразится. Если засунем туда QColor - он тоже отобразится (шестнадцатеричное значение цвета). Хочу заметить, что о QColor QVariant ничегошеньки не знает, в отличии от простых типов.  Уточняю вопрос: Как это гребаный QVariant знает как преобразовать QColor в строку и подсунуть куда нужно? (исходники перерыл).
  Второй, риторически-философский вопрос. Почему так сложно это делать по правилам в QT, когда в лоб гораздо проще....
« Последнее редактирование: Октябрь 31, 2010, 19:42 от Alexandr Az » Записан
BlackTass
Гость
« Ответ #1 : Октябрь 31, 2010, 19:45 »

Есть еще один вариант, заюзать модель-вью и в индексах в internalPointer хранить указатель на нужный объект.
Про QVariant ничо не понял. Вообще вариант знает о колоре, просто для него нет спец-метода (так как QVariant входит в QtCore, а QColor это часть QtGui), но через шаблонный метод value() колор вполне возвращается
Записан
Alexandr Az
Гость
« Ответ #2 : Октябрь 31, 2010, 21:10 »

Есть еще один вариант, заюзать модель-вью.......

В данном случае, овчинка выделки не стоит. Да и неверно это с точки зрения похода.

...... но через шаблонный метод value() колор вполне возвращается

А тут поподробнее можно?
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #3 : Октябрь 31, 2010, 21:39 »

Цитировать
В данном случае, овчинка выделки не стоит. Да и неверно это с точки зрения похода.
Вообще тролли рекомендуют использовать именно Model/View вместо "удобных" вьюверов.. С MV производительность увеличится, да и гемора не будет как с QTableWidget..
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Alexandr Az
Гость
« Ответ #4 : Октябрь 31, 2010, 22:53 »

Цитировать
Вообще тролли рекомендуют использовать именно Model/View вместо "удобных" вьюверов.. С MV производительность увеличится, да и гемора не будет как с QTableWidget..

Дело не в удобстве, а в прагматизме. Как видите, я здесь больше рассуждаю о самой библиотеке и подходах, чем о реальных реализациях. А если нету модели? Расскажу о задаче. Коннект к БД. Слева наименования коннектов, справа - пункты коннекта (хост, юзер нейм и так далее ). Невозможно сделать модель  - класс QSettings не поддерживает все те фитчи, которые нужны в данной модели для GUI (к примеру, сопоставление параметров с их визуальным отображением). Да и вообще, задача не того уровня, чтобы ДЕЛАТЬ МОДЕЛЬ для окна коннекта.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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