как запросить у модели инф об элементе при переопределении метода data модели |
Здравствуйте, гость ( Вход | Регистрация )
как запросить у модели инф об элементе при переопределении метода data модели |
Steklova Olga |
3.4.2012, 19:04
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Привет!
В моей модели переопределены две роли элементов. При переопределении одной роли элемента модели мне надо использовать информацию о другой роли этого элемента. А именно, для одной из колонок модели цвет текста элемента модели должен быть красным, если значение соотв. поля в соотв. записи таблицы БД равно 1. К тому же, отображение значения этого поля тоже должно быть переопределено (если значение соотв. поля в соотв. записи таблицы БД равно 1, то вместо 1 надо отобразить ВАЖНЫЙ, иначе надо отобразить ОБЫЧНЫЙ). В справке сказано , что мы можем запросить у модели информацию об элементе, передав ей модельный индекс, соответствующий элементу, и задав роль для получения данных желаемого типа: QVariant value = model->data(index, role); Но мне нужно сделать это при переопределении метода data модели. Вот мой код:
А вот что я не понимаю: 1. Метод data, который я переопределяю, вызывается для каждой из ролей, которые вообще существуют для модели? 2. Порядок вызова метода data для ролей одного и того же элемента модели - непредсказуем? 3. При переопределении метода data можно писать: но можно ли писать так: или так (что то же самое): 4. Можно ли при переопределении роли Qt::ForegroundRole проверять равенство (valueForDisplayRole.toInt() == 1) ?Совсем глупый вопрос: на это не влияет то, что при переопределении роли case Qt::DisplayRole я заменила отображение 1 на "ВАЖНЫЙ"? Спасибо за внимание |
|
|
Steklova Olga |
5.4.2012, 19:14
Сообщение
#2
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Юрий, извините, но я не поняла следующее.
Я задала первый вопрос: Цитата(Steklova Olga @ 3.4.2012 @ 23:33) Правильно ли я понимаю, что в методе data наследуемой модели, независимо от того, для какой роли он сейчас был вызван, можно запросить у базовой модели данные не только для этой роли, а вообще для любой роли? Вы ответили:Цитата(Litkevich Yuriy @ 4.4.2012 @ 11:22) ну да. Ты же можешь передать в метод базового класса любое значение аргумента. Затем я задала второй вопрос: Цитата(Steklova Olga @ 3.4.2012 @ 23:33) Можно рассчитывать на то, что в базовой модели всегда определены данные для любой роли? Вы ответили:Цитата(Litkevich Yuriy @ 4.4.2012 @ 11:22) нет, к сожалению троли поленились. Если заглянешь в исходники то увидишь, что кроме Qt::DisplayRole и Qt::EditRole ничего не обрабатывается. Где не обрабатывается? Когда? В какую папку, в какой файл, в какой метод заглянуть, чтобы это увидеть? Чем отличается обработка ролей Qt::DisplayRole и Qt::EditRole от других? А то ведь я в этих вопросах спрашивала одно и то же, но разными словами, а получила два противоположных ответа: "да" и "нет". Почему на второй вопрос ответ "нет"? В методе data наследуемой модели, если он сейчас был вызван для какой-то роли ROLE кроме Qt::DisplayRole и Qt::EditRole, нельзя запросить у базовой модели данные для ролей кроме ROLE? Так что-ли? Хотя, вряд ли... Видимо, Вы, отвечая на второй вопрос, имели в виду совсем другое. |
|
|
Текстовая версия | Сейчас: 27.11.2024, 3:50 |