Я использую QComboBox
для выбора единицы (произвольного свойства объекта) из таблицы Units. Проблема в том, что объект в моей модели данных не может иметь единицы (NULL в таблице), и в этом случае QComboBox
показывает значение, которое произошло в верхней части списка. Выбрать «none» невозможно.
Что вы предлагаете добавить поддержку NULL? У меня несколько версий:QComboBox с поддержкой NULL
- Вставьте специальную запись в таблицу Units с именем '-' или 'N/A'. Не точно NULL - будет иметь свой собственный идентификатор.
- Установить изделия в категории
QComboBox
и обновить модель вручную. Возможное, но утомительное - прощай автоматическое обновление списка модулей.
Что еще возможно - подклассификация QComboBox
(переопределение чего)? Я не вижу ничего подобного setEditorData
/setModelData
, как в QAbstractItemDelegate
для управления элементами.
Давайте забудем на минуту о 'QComboBox' и скажите мне, когда вы получаете данные из базы данных, как вы хранящие' NULL' в вашем представлении объекта? – Karlson
Данные извлекаются из базы данных и хранятся в коллекциях объектов (вручную вместо использования любого ORM, но я над этим работаю.) Затем создаются и заполняются эти данные QStandardItemModel, которые должны быть представлены для редактирования. У меня есть список редактируемых объектов (называемых Enums), пользователь может выбрать строку в 'QTableView' и использовать редактор с combobox для редактирования Enum. NULL, очевидно, поступает из БД как нулевой QVariant и затем сохраняется как целое число 0 (у меня есть правило, что id <= 0 недопустимы.) – alxx
Не пришло в голову, пока я не объяснил ситуацию кому-то :) Конечно, когда выбран пункт в списке я могу сделать с редактором все, что мне нужно, включая добавление опции NULL. Извините за это slowpoking, я закрываю вопрос. – alxx