Russian Qt Forum

Qt => Вопросы новичков => Тема начата: FakeMoNEy от Ноября 27, 2012, 23:56



Название: QTableView QAbstractmodel
Отправлено: FakeMoNEy от Ноября 27, 2012, 23:56
Здравствуйте, у меня есть несколько вопросов
1)Я заполняю таблицу в цикле, на форрме есть statusbar на нем qlabel
Код
C
void MainWindow::createStatusBar()
{
   StatusLabel = new QLabel;
   StatusLabel->setAlignment(Qt::AlignLeft);
   StatusLabel->setMinimumSize(100,10);
   statusBar()->addWidget(StatusLabel);
}
В цикле заполнения таблицы я обновляю статус бар, в нем написано сколько строк обработано вот так [10/1000]
Заполнение идет долго строк бывает много, и если кликнуть на окно программы окошко зависает и самодельный прогресс бар больше не обновляется, пробовал отключать сигналы у виджетов, не помогает, как решить данную проблему, фильтр эвентов?

2)Использую QTableView и QStandardItemModel мне нужно чтобы при нажатии на строку она раскрывалась (что-то вроде QTreeview) но не только вниз, а в две стороны, (т.е строка которая раскрывает подстроки должна стоять в середине этих подстрок), в левом столбце таблицы в зависимости от того можно ли при клике на поле раскрыть группу подстрок, стоит + или - если группа подстрок раскрыта, или ничего если строка без группы подстрок.
Я использую SetRowHidden() в QTableview т.к. ничего другого не нашел.
Строк много бывает до 2 миллионов а может и больше. Соответственно долго заполняет, как ускорить? Наследоваться от QAbstractmodel? Или в создать базу данных? Может есть варианты наследоваться от QAbstractmodel при этом сделать подстроки как описано выше не используя setRowHidden если да можно какой нибудь минималистичный пример с подстроками?


Название: Re: QTableView QAbstractmodel
Отправлено: kambala от Ноября 28, 2012, 00:13
1) периодически вызывать (т.е. в своем цикле) qApp->processEvents()
2) думаю для такого большого количества записей лучше использовать БД и QSql...Model


Название: Re: QTableView QAbstractmodel
Отправлено: FakeMoNEy от Ноября 28, 2012, 01:11
Там не всегда такое большое, может быть и 1000, а сворачивание строк можно реализовать с помощью  Qsqlmodel?


Название: Re: QTableView QAbstractmodel
Отправлено: Bepec от Ноября 28, 2012, 07:29
Скорость заполнения строк можно ускорить, отключив обновление таблицы на это время :) Изжёвано

Если напишешь свою модель, сможешь делать что душе угодно, хоть столбики, хоть гробики :)


Название: Re: QTableView QAbstractmodel
Отправлено: FakeMoNEy от Ноября 28, 2012, 09:12
Скорость заполнения строк можно ускорить, отключив обновление таблицы на это время :) Изжёвано

Если напишешь свою модель, сможешь делать что душе угодно, хоть столбики, хоть гробики :)
Обновление отключил, заблокировал сигналы и setupdate отключил у таблицы почти сразу. Все равно долго.

А пример можно? не просто модель, а с гробиками? :)


Название: Re: QTableView QAbstractmodel
Отправлено: Bepec от Ноября 28, 2012, 10:48
Вынужден отказать из-за отсутствия времени и отсутствии задора.

Model-View в ассистанте подскажет вам.