LINUX.ORG.RU

Зачем нужен метод roleNames в Qt

 ,


0

3

Изучаю Qt по книге Mastering Qt 5 за авторством Guillaume Lazar. Дошел до третьей главы. Автор предлагает реализовать класс AlbumModel для отображения списка альбомов с помощью QListView. Для этого необходимо реализовать два метода rowsCount и data. С помощью этих методов QListView может получить общее количество строк в списке и для каждой строки получить данные для отображения на экране. Абстракция понятна и логична, но возникает вопрос: зачем в модели нужен метод QHash<int, QByteArray> roleNames() const override? Для отображения данных метод судя по всему не используется. Возможно он нужен для какой-то интроспеции, но какой? В документации Qt есть короткий комментарий, который не добавляет ясности:

Returns the model’s role names.

При помощи roleNames можно разделить данные на те, что показываются пользователю и те, что используются при обработке, в частности, для специфических сортировок.

alex-w ★★★★★
()
Ответ на: комментарий от alex-w

Правильно ли я понял, что если мне не нужны специфические сортировки, то я могу не переопределять этот метод? Или вернуть из него пустой хеш?

Goganchic ★★
() автор топика
Ответ на: комментарий от Goganchic

скорее не переопределять, пустой может быть трактован как отсутствие ролей у пользователя, насколько я понимаю

Syncro ★★★★★
()
Ответ на: комментарий от Goganchic

Зачем переопределять? По умолчанию это DisplayRole и если тебе не нужны, к примеру, подсказки, то ты не определяешь ToolTipRole. Если не нужно в ячейке хранить что-то специфическое, то не определяешь UserRole и т.д.

alex-w ★★★★★
()

Это для QML. Когда используешь модель в QML, то у тебя доступ к данным по modelData.roleName.

unC0Rr ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.