Название: QStandardItemModel. EditRole, DisplayRole - как хранить разные данные в них? Отправлено: Пытон от Март 02, 2017, 07:26 Код Получим в итоге: edit edit Т.е. и EditRole и DisplayRole хранят значение из последнего item.setData Я чего-то не понимаю? Почему item.setData("edit", QtCore.Qt.EditRole) заодно меняет и DisplayRole? А на кой ляд тогда нужны вообще эти EditRole и DisplayRole? Я наивно полагал, что для того, чтобы иметь возможность отображать в ячейке таблицы одно значение, а хранить для обработки другое. Название: Re: QStandardItemModel. EditRole, DisplayRole - как хранить разные данные в них? Отправлено: __Heaven__ от Март 02, 2017, 07:36 Если я не путаю :
Цитировать Код ......... Note: The default implementation treats Qt::EditRole and Qt::DisplayRole as referring to the same data. Название: Re: QStandardItemModel. EditRole, DisplayRole - как хранить разные данные в них? Отправлено: Пытон от Март 02, 2017, 08:12 Премного благодарен. Данные в UserRole сохраняются и отличаются от DisplayRole
----- Но кто-то тогда может мне объяснить для чего используется EditRole? Название: Re: QStandardItemModel. EditRole, DisplayRole - как хранить разные данные в них? Отправлено: __Heaven__ от Март 02, 2017, 09:12 Он используется для того, чтобы создавать пользовательские модели, наследованные от QAbstract***Model.
Например табельный номер. Я могу выводить DisplayRole как QVariant(QStringLiteral("№%1").arg(number)), а редактировать EditRole как QVariant(number) чтобы стандартный делегат предоставлял мне виджет для редактирования чисел, а не строк и в setData принимал QVariant конвертируемый в uint. Название: Re: QStandardItemModel. EditRole, DisplayRole - как хранить разные данные в них? Отправлено: Swa от Март 02, 2017, 09:14 Qt::DisplayRole 0 The key data to be rendered in the form of text. (QString)
Qt::EditRole 2 The data in a form suitable for editing in an editor. (QString) Допустим, вы выводите в таблице зарплату сотрудника. Qt::DisplayRole (QString) : "1000 р." Qt::EditRole (int для редактирования) : 1000 В зависимости от типа данных в Qt::EditRole будет создаваться соответствующий делегат для редактирования этих данных. |