Size: a a a

2021 January 22

МВ

Макс Воробьев... in Qt
Roman Hakh
Прошерстил формы. Ускориться обработку tableview никак нельзя. View запрашивает все данные только через ф-цию data. Массивом их никак нельзя вернуть.
не все
источник

МВ

Макс Воробьев... in Qt
только необходимые
источник

RH

Roman Hakh in Qt
Макс Воробьев
только необходимые
Я попробовал вызывать dataChanged только когда ячейка изменилась, но по скорости вышло тоже самое что и вызывать dataChanged для всех
источник

МВ

Макс Воробьев... in Qt
если таблвью работает нормально, то а) будут запрошены данные только видимых ячеек  б) данные будут перезапрашиваться только по dataChanged
источник

МВ

Макс Воробьев... in Qt
Roman Hakh
Я попробовал вызывать dataChanged только когда ячейка изменилась, но по скорости вышло тоже самое что и вызывать dataChanged для всех
а пройдись ка профайлером
источник

МВ

Макс Воробьев... in Qt
может не с тем борешься
источник

RH

Roman Hakh in Qt
Макс Воробьев
а пройдись ка профайлером
Analyze -> Performance analyzer
Или
Analyze -> QML profiler
источник

RH

Roman Hakh in Qt
?
источник

m

mefest in Qt
Roman Hakh
Я попробовал вызывать dataChanged только когда ячейка изменилась, но по скорости вышло тоже самое что и вызывать dataChanged для всех
вызывать наверное нужно не на каждую ячейку, а на область которую надо отрисовать.
но наверное лучше профайлером пройтись сначала
источник

RH

Roman Hakh in Qt
mefest
вызывать наверное нужно не на каждую ячейку, а на область которую надо отрисовать.
но наверное лучше профайлером пройтись сначала
Тоже об этом думал.
Если записать все ячейки в которых были изменения, и потом передать кординаты самой верхней левой, и самой нижней правой, то в результате, если живых больше чем мертвых, то будет практически то же самое что и обновлять всю талицу.
источник

m

mefest in Qt
Roman Hakh
Тоже об этом думал.
Если записать все ячейки в которых были изменения, и потом передать кординаты самой верхней левой, и самой нижней правой, то в результате, если живых больше чем мертвых, то будет практически то же самое что и обновлять всю талицу.
в играх делят на чанки
источник

m

mefest in Qt
но опять же, надо убедиться что проблема в перерисовке. посмотри сколько времени вообще nextStep выполняется
источник

RH

Roman Hakh in Qt
mefest
но опять же, надо убедиться что проблема в перерисовке. посмотри сколько времени вообще nextStep выполняется
Посмотрел.
Перформанс анализатор показывает что эта ф-ция выполняется 95% времени от всей работы програмы.
источник

m

mefest in Qt
Roman Hakh
Посмотрел.
Перформанс анализатор показывает что эта ф-ция выполняется 95% времени от всей работы програмы.
наверное стоит сначала ее оптимизировать
там вроде проверка идет и для тех ячеек которые точно поменяться не могут
источник

RH

Roman Hakh in Qt
mefest
наверное стоит сначала ее оптимизировать
там вроде проверка идет и для тех ячеек которые точно поменяться не могут
Тот результат - это для приложения в котором сигнал dataChanged отправляеться только на измененные ячейки.
источник

m

mefest in Qt
Roman Hakh
Тот результат - это для приложения в котором сигнал dataChanged отправляеться только на измененные ячейки.
ну можешь и полную перерисовку сравнить. но раз ты разницы на глаз не заметил то и результат примерно такой же наверное будет
источник

RH

Roman Hakh in Qt
mefest
ну можешь и полную перерисовку сравнить. но раз ты разницы на глаз не заметил то и результат примерно такой же наверное будет
Сравнивал. Результат такой же.
Очень странно что разрабы не сделали возможность запросить данные у модели сразу массивом, а не по одному елементу.
источник

m

mefest in Qt
Roman Hakh
Сравнивал. Результат такой же.
Очень странно что разрабы не сделали возможность запросить данные у модели сразу массивом, а не по одному елементу.
ты о чем? dataChanged как раз и говорит view какой диапазон индексов поменялся
источник

RH

Roman Hakh in Qt
mefest
ты о чем? dataChanged как раз и говорит view какой диапазон индексов поменялся
Я имею ввиду ф-цию data в QAbstractTableModel.
View вызывает ф-цию data для каждого своего елемента. Но можно было бы сделать такую которая бы вернула сразу весь массив данных.
источник

m

mefest in Qt
Roman Hakh
Я имею ввиду ф-цию data в QAbstractTableModel.
View вызывает ф-цию data для каждого своего елемента. Но можно было бы сделать такую которая бы вернула сразу весь массив данных.
для чего? чем тебе проход по массиву удобней чем проход по модели?
источник