Size: a a a

2020 July 15

VK

Valentin Kornienko in Qt
beginRemoveRows можно вызывать после endInsertRows?
источник

VK

Valentin Kornienko in Qt
в одном методе
источник

VK

Valentin Kornienko in Qt
Если я хочу удалить часть элементов, которые видны
источник

AS

Anatoly Shirokov in Qt
Valentin Kornienko
beginRemoveRows можно вызывать после endInsertRows?
Нет причин сомневаться
источник

VK

Valentin Kornienko in Qt
    QVector<Event> newItems = m_pInfoDataProvider->getEventsCollection();
   beginInsertRows(QModelIndex(), 0 ,newItems.count() );
   for( const auto& newItem: newItems )
           m_events.push_front( newItem );
   endInsertRows();

   const size_t itemstemsCount = m_passageEvents.size();
   if( passageItemsCount > DisplayedItemsConstrain )
    beginRemoveRows( QModelIndex() , DisplayedItemsConstrain, itemstemsCount - 1);
источник

VK

Valentin Kornienko in Qt
Имею ли я право так делать? Или есть способ лучше задать для ListVIew constraint на отображение элементов?
источник

VK

Valentin Kornienko in Qt
Чтобы показывать НЕ более 10 элементов
источник

VK

Valentin Kornienko in Qt
И соответственно, не хранить в наследнике QAbstractListModel лишние элементы?
источник

VK

Valentin Kornienko in Qt
Или я что-то делаю не так?
источник

AS

Anatoly Shirokov in Qt
Если надо показывать не более 10 элементов, надо сделать прокси модель и скользящее окно, подписаться на изменение исходной модели и при добавлении продвигать видимую область, инвалидируя все элементы окна.
источник

VK

Valentin Kornienko in Qt
@anatolijs дело в том, что мне в принципе не нужно больше N элементов на вью. Т.е. скроллинг будет только в пределах тех элементов, которые были добавлены новыми + старые, елси они попадают под ограничение видимых
источник

i

ilya \r\n in Qt
Егор
А в куте нету аналога std::set? QSet не сортирует
The QMap class is a template class that provides a red-black-tree-based dictionary.
Мб QMap подойдет?
источник

D

Dmitriy in Qt
Егор
А в куте нету аналога std::set? QSet не сортирует
Полноценного - нет.
источник

AS

Anatoly Shirokov in Qt
Valentin Kornienko
@anatolijs дело в том, что мне в принципе не нужно больше N элементов на вью. Т.е. скроллинг будет только в пределах тех элементов, которые были добавлены новыми + старые, елси они попадают под ограничение видимых
Тогда сделай буфер из 10, а когда достигнешь 10 просто сдвигай и делай emit dataChanged. Зачем добавлять и удалять?
источник

i

ilya \r\n in Qt
ilya \r\n
The QMap class is a template class that provides a red-black-tree-based dictionary.
Мб QMap подойдет?
Чет неожиданно, что QSet и QMap имеют в основе разные структуры данных.
источник

VK

Valentin Kornienko in Qt
Anatoly Shirokov
Тогда сделай буфер из 10, а когда достигнешь 10 просто сдвигай и делай emit dataChanged. Зачем добавлять и удалять?
Возможно, я не правильно объясняю то, что хочу сделать
источник

Е

Егор in Qt
ilya \r\n
The QMap class is a template class that provides a red-black-tree-based dictionary.
Мб QMap подойдет?
Я взял обычный лист + сорт + юник, у меня один раз данные инициализируются, потери не велики
источник

AS

Anatoly Shirokov in Qt
Valentin Kornienko
Возможно, я не правильно объясняю то, что хочу сделать
предположим у тебя модель, 0 строк. добавляешь первые, сообщаешь виду через begin/endInsertRows, добавляешь еще и т. д. до 10. добавился 11-ый. не надо добавлять и удалять, просто удали из массива первый и добавь в конец, и для 10 элементов вызови emit dataChanged, чтобы вид обновил содержимое, получишь эффект скользящего окна
источник

i

ilya \r\n in Qt
Егор
Я взял обычный лист + сорт + юник, у меня один раз данные инициализируются, потери не велики
а, ну тоже верно
просто интересный факт, что QMap на красно-черном дереве в отличии от сэта)
источник

Е

Егор in Qt
ilya \r\n
а, ну тоже верно
просто интересный факт, что QMap на красно-черном дереве в отличии от сэта)
Угу, лист не список, сет не дерево, неочевидно как-то. Хотя не удивлюсь если эти контейнеры еще до стандартного С++ существовали
источник