LINUX.ORG.RU

QTableWidget && QWidget

 


0

2

Всем привет,

может кто-нибудь подскажет вариант решения проблемы.

Есть таблица в виде QTableWidget. В этой таблице есть большое колличество строк, больше 10000. В каждой строке нужно добавить чекбокс, что и делается с помощью setCellWidget.
Вообщем проблема в том, что оно дико тормозит, может отрисовывать таблицу несколько минут. Как можно оставить чекбокс и сделать отрисовку быстрее?

★★

мне кажется будет лучше сделать таблицу как QTableView, сделать для нее модель и делегата, а пусть уже Qt решает как и что рисовать

TOXA ★★
()
Ответ на: комментарий от Gin

еще вариант после быстрого гуглинга

void QTableWidgetItem::setCheckState(Qt::CheckState state);
Qt::CheckState QTableWidgetItem::checkState();

это делает ячейку чекбоксом

TOXA ★★
()
Ответ на: комментарий от TOXA

ну на самом деле чекбокс - это только один из виджетов, в другом месте нужно QLabel добавлять. А про checkState я вкурсе

Gin ★★
() автор топика
Ответ на: комментарий от unC0Rr

Ссылки тоже делать кастомной отрисовкой? Просто в лэбл помещается с десяток-два разных ссылок.

Gin ★★
() автор топика
Ответ на: комментарий от TOXA

добавляется произвольный виджет. С любым типом виджета, даже с пустым отрисовка начинает дико тормозить

Gin ★★
() автор топика
Ответ на: комментарий от Gin

Почему бы и нет? Может быть, можно воспользоваться функцией QLabel::render или QStyle::drawControl (последняя, впрочем, похоже не рендерит лейблы со ссылками, но могу и ошибаться, покопаться нужно, в общем)

unC0Rr ★★★★★
()

проблема в том, что оно дико тормозит, может отрисовывать таблицу несколько минут

Потому, что обрабатывает все эти 100500 виджетов. Создавайте виджеты только в активной ячейке, а в остальных просто рисуйте их внешний вид с помощью делегата.

no-such-file ★★★★★
()
Ответ на: комментарий от Gin

Так и только так. Нужны весомые основания использовать QTableWidget )

VladimirMalyk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.