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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: можно ли изменить переменную класса в model::data() ?  (Прочитано 4508 раз)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« : Октябрь 16, 2017, 15:10 »

имеется класс
Код:
class orderList : public QSqlQueryModel
в нем переменная tek_row. нужно, чтобы она менялась в зависимости от index.row() в
Код:
QVariant orderList::data(const QModelIndex &index,int role) const
Это возможно? Сделать это "в лоб" не удается-пишет
Код:
assignment of member 'orderList::tek_row' in read-only object
         this->tek_row=index.row();
я ведь меняю не элементы data(), а public-переменную...
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Октябрь 16, 2017, 15:22 »

для изменения переменных класса в его константных методах необходимо применять mutable перед объявлением переменной.
Но, действительно ли оно вам так нужно?
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #2 : Октябрь 16, 2017, 15:26 »

в методе data() идет нудный расчет трех отображаемых полей с несколькими запросами к базе. Хотелось, чтобы этот пересчет делался только при изменении данных, а не каждый раз, когда юзер ткнет в форму мышкой
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Октябрь 16, 2017, 16:08 »

Возможно этот пересчёт можно перенести в метод setData?
Записан
nvek
Гость
« Ответ #4 : Ноябрь 17, 2017, 05:40 »

то-есть получается, что у тебя, когда вызывается метод data, в этом методе происходят уберсложные расчеты?
Записан
Павелъ
Гость
« Ответ #5 : Ноябрь 22, 2017, 15:15 »

то-есть получается, что у тебя, когда вызывается метод data, в этом методе происходят уберсложные расчеты?

Ничего сложного не происходит.

Просто, там можно подать в качестве аргумента Qt:SortOrder. А я бы хотел, как в qSort lambda-функцию. Там дочерние приемы, в качестве текста записаны ип-адреса. Я откусываю последние цифры после точки. Привожу к инту и сравниваю.

Вот, что я хочу сделать.

Можно конечно самому реализовать сортировку. Но, зачем изголяться с пузырьком или вставкой, когда умные дядьки-программисты до меня уже сделали нормальные алгоритмы сортировки.

Вопрос: можно как-то вместо sortorder подать что-то типа lessThan в sortChildren?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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