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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 218
1  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 13, 2025, 20:37
я про https://doc.qt.io/qt-6/qabstractitemview.html#SelectionMode-enum
2  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 13, 2025, 19:13

Это связано с тем что tablemodel привязана к treview?
Или в коде проблема?



в коде, все вью умеют в разные селекшоны
проверь что флаги позволяют выделать несколько строк вообще
3  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 11, 2025, 02:13
Вообще SortFilterProxyModel может быть источником тормозов в том числе
Она хорошая для простых кейзов, для сложных лучше писать сортировку руками
Почему может не работать - хз надо читать код а мне лень
может где-то контракт модели нарушен но в приведенном коде вроде всё ок
4  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 11, 2025, 02:11
Код:
void Model::update(std::vector<Type> &fresh)
{
    int prvsz = store.size();
    int cursz = fresh.size();
 
    beginInsertRows(QModelIndex(), prvsz, cursz);
    store.swap(fresh);
    endInsertRows();
}

это кстати будет работать только если в новом векторе рядов больше чем в старом
5  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 10, 2025, 14:14
похоже на правду, да
6  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 10, 2025, 01:11
Собственно сама модель подписана на beginInsertRows и вызывает rowCount который тут ожидается старый
7  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 10, 2025, 00:42
beginInsertRows должен предшествовать изменению данных, endInsertRows должен быть после
иначе может разъехаться стейт
для некоторых вьюх это может работать (если колбек на beginInsertRows пустой) для некоторых нет
тут только смотреть конкретную реализацию (и я конечно из головы уже не помню че там 14 лет назад было дело)
8  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 05, 2025, 16:41
Цитировать
Или кривовато???
я бы ожидал багов да=)
весь смысл QTableView в вертикальном хедере который позволяет менять высоту строк (а как следствие высоту всей вью и макс значение скроллбара)
Используй QTreeView с uniformRowHeights=true https://doc.qt.io/qt-6/qtreeview.html#uniformRowHeights-prop - так оно будет вычислять скроллбар как firstRowHeight*rowCount() а не суммировать в цикле.
Скорее всего тормоза у тебя не уйдут так потому что все равно чтобы посчитать высоту вьюпорта скроллбара надо просуммировать вертикальные хедеры

Цитировать
У меня используется мьюченный std::unordered_map ну чтобы threadsafe был и данные добавляются при этом формируется ключ, чтобы
если уже такие данные есть до мы просто их обновляем.
не вижу особо проблем - в модели у тебя все равно будет вектор/дек так как ты в какой-то момент захочешь сортировку по колонкам делать и менять содержимое элементов
надо только аккуратно держать в синке вектор с мапой
в целом можно избежать вставки в середину лайфхаком - всегда добавлять новое в конец (beginInsertRows) а потом пересортировывать (вызывая в просессе layoutAboutToBeChanged/layoutChanged)
Делать фулл reset не очень удобно на практике так как полностью перерисоывает вьюпорт, сбрасывает селекшн.
Вьюша же рисует только то что попадает во вьпорт и если ряды добавляются вне его то никаких перерисовок не будет
9  Разное / Говорилка / Re: Деревянный айтем : Сентября 05, 2025, 14:29
Ну мы платим ветку
10  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 05, 2025, 13:45
А, ну и вместо reset советую insert/remove rows
11  Qt / Model-View (MV) / Re: ModelView большое количество данных : Сентября 05, 2025, 13:44
demaker
Попробуй использовать QTreeView он чуть проще (не позволяет ресайзить вертикальные хедеры + есть опция uniformRowHeight которая делает отрисовку за O(N) вместо O(N*N))
1500 это не очень большое количество, стандартные вьюги должны тянуть такое если поиграться с опциями. Если я правильно помню, они сносно тянут до 20к строк.
Если надо прямо много (больше 100к, максимально я рисовал 3 миллиона строк), то надо писать свою вьюху - внутри QTableView/QTreeView есть стейт рядов (вектор) который хранит высоту ряда и синхронизируется с моделью. Так как это вектор то его ресайзы занимают значительно время на вставке в середину. Соответственно в модели вместо вектора надо пользовать std::deque. Но опять же это применимо когда рядов хотя бы полмиллиона.
12  Разное / Говорилка / Re: Деревянный айтем : Сентября 04, 2025, 15:40
это потенциальные сеньоры?)

а перевернуть строку могут?

не, сеньоров нет вообще
джуны/мидлы
ну точнее как бывают чуваки с 20ю годами опыта но на сеньора не тянут
вообще что-то с рынком беда какая-то
13  Разное / Говорилка / Re: Деревянный айтем : Сентября 04, 2025, 01:15
ни в глубину ни в ширину вообще ничего не могут=(
14  Разное / Говорилка / Деревянный айтем : Сентября 02, 2025, 20:38
Крч даю задачу на собесах найти деревянный айтем находящийся на максимальной глубине в бинарном дереве а никто решить не может
Грустно
15  Разное / Говорилка / Re: А чего собственно форум в коматозе? : Сентября 02, 2025, 20:35
Офигеть форум ожил
Страниц: [1] 2 3 ... 218

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