Прошу прощения, оказалось, что в проекте используется не QAbstractItemModel, а QAbstractListModel. И в принципе оно особых нареканий не вызывает, проблемы похоже идут из QSortFilterProxyModel.
А проблема такая:
в QAbstractListModel у нас классы, которые имеют разные поля.
QSortFilterProxyModel сортирует их по определенному полю, а также выполняет фильтрации по определенному полю
Проблема в следующем: если мне нужно, чтобы классы сортировались, скажем по дате добавления, а мы при этом изменим имя, то все записи будут пересортированы. А нужно, чтобы любые изменения игнорились, кроме изменений того поля, по которому ведется сортировка.
И сейчас в проекте используется два QSortFilterProxyModel - результат одного передается на вход другому: один фильтрует по тегам, другой по имени и сортирует по разным полям. Возможно ли сделать две фильтрации одним классом (они могут быть применены одновременно: например, нам надо показать только записи с определенными тегам с определенной маской имени, при этом отсортировать по определенному полю)?
Хорошо, спасибо, попробую. А если я меняю запись, и меняется всего одно поле, то лучше добавлять в dataChanged третий аргумент с именем роли или слать также как при добавлении/удалении?
И может подскажете еще с такой проблемой: данные из этой модели подаются в QSortFilterProxyModel, а она пересортировывает полностью весь список, при любом изменении данных (пришлось отключить сортировку). Может быть можно как-то заставить ее следить только за определенной ролью и сортировать только при ее изменении?
А можно поподробнее про вычисление индекса и что после этого отправлять в dataChanged? layout кидаю, т.к. у меня после удаления во вьюхе индексы ползут, видимо из-за этого.
Код мне достался от предыдущего разработчика по наследству, вот сижу допиливаю.
removeRows/removeColumns - т.е. надо переопределить эти методы и вызывать уже их?
@Salavat вот, держите https://drive.google.com/file/d/0B0gwcxY1U5bUZWZ1Z... Скажите, когда заберете, а то 4 гига все-таки. Я правда его малость покурочил, когда пытался подключить геймпад от xbox, но вроде работает. Если есть возможность, попробуйте xbox-овские геймпад.
Что такое "давальческое сырье"? Сырье я куплю сам и разрежу его сам по просьбе заказчика. Заказчику нужно лишь ткнуть пальцем в чертеж, который он хочет раскроить.
По идее, если две шестеренки буду вращаться в одном направлении, то они будут клинить друг друга.
Я вот еще думал, что может быть одна шестерня свободно вращается на оси, но соединена с горизонтальной шестерней, а другая жестко зафиксирована на оси, но с горизонтальной не соединена. Тогда один шкив вращает клешней, а другой двигает вверх/вниз, одновременно вызывая и вращение клешни, что необходимо компенсировать подбором скорости первого шкива.
Я представляю себе, как устроен компьютер в общем виде. Осилил OpenAL. Однако этого явно мало, чтобы взять и спаять консоль. Вот и задал вопрос, чтобы указали в какую сторону копать. Сейчас осваиваю это belogic.com/uzebox/index.asp однако хотелось бы затем спроектировать что-то свое.
А проблема такая:
в QAbstractListModel у нас классы, которые имеют разные поля.
QSortFilterProxyModel сортирует их по определенному полю, а также выполняет фильтрации по определенному полю
Проблема в следующем: если мне нужно, чтобы классы сортировались, скажем по дате добавления, а мы при этом изменим имя, то все записи будут пересортированы. А нужно, чтобы любые изменения игнорились, кроме изменений того поля, по которому ведется сортировка.
И сейчас в проекте используется два QSortFilterProxyModel - результат одного передается на вход другому: один фильтрует по тегам, другой по имени и сортирует по разным полям. Возможно ли сделать две фильтрации одним классом (они могут быть применены одновременно: например, нам надо показать только записи с определенными тегам с определенной маской имени, при этом отсортировать по определенному полю)?