![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
FakeMoNEy |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.11.2012 Пользователь №: 3612 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте, у меня есть несколько вопросов
1)Я заполняю таблицу в цикле, на форрме есть statusbar на нем qlabel
В цикле заполнения таблицы я обновляю статус бар, в нем написано сколько строк обработано вот так [10/1000] Заполнение идет долго строк бывает много, и если кликнуть на окно программы окошко зависает и самодельный прогресс бар больше не обновляется, пробовал отключать сигналы у виджетов, не помогает, как решить данную проблему, фильтр эвентов? 2)Использую QTableView и QStandardItemModel мне нужно чтобы при нажатии на строку она раскрывалась (что-то вроде QTreeview) но не только вниз, а в две стороны, (т.е строка которая раскрывает подстроки должна стоять в середине этих подстрок), в левом столбце таблицы в зависимости от того можно ли при клике на поле раскрыть группу подстрок, стоит + или - если группа подстрок раскрыта, или ничего если строка без группы подстрок. Я использую SetRowHidden() в QTableview т.к. ничего другого не нашел. Строк много бывает до 2 миллионов а может и больше. Соответственно долго заполняет, как ускорить? Наследоваться от QAbstractmodel? Или в создать базу данных? Может есть варианты наследоваться от QAbstractmodel при этом сделать подстроки как описано выше не используя setRowHidden если да можно какой нибудь минималистичный пример с подстроками? |
|
|
RazrFalcon |
![]()
Сообщение
#2
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
1) Keeping the GUI Responsive
думаю будет достаточно, в циклеучтите что это замедлит программу, немного 2) setRowHidden - очень медленный способ остальное не понял, нужен скрин "QAbstractmodel" вряд ли даст существенный прирост если нужна частичное выборка, а не сразу все 2млн строк - то да, лучше база, пусть даже sqlite |
|
|
FakeMoNEy |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.11.2012 Пользователь №: 3612 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
1) Keeping the GUI Responsive думаю будет достаточно, в циклеучтите что это замедлит программу, немного 2) setRowHidden - очень медленный способ остальное не понял, нужен скрин "QAbstractmodel" вряд ли даст существенный прирост если нужна частичное выборка, а не сразу все 2млн строк - то да, лучше база, пусть даже sqlite Вот так выглядит таблица ![]() Вот так после нажатия на плюс в первом столбце ![]() |
|
|
RazrFalcon |
![]()
Сообщение
#4
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Даже учитывая что это дерево чистой воды, самый простой способ реализации на таблице будет через скрытие строк.
Более сложный и быстрый - через QSortFilterProxyModel и filterAcceptsRow. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 5:54 |