QTableWidget для мониторинга данных, сильный расход ресурсов |
Здравствуйте, гость ( Вход | Регистрация )
QTableWidget для мониторинга данных, сильный расход ресурсов |
Fitz |
8.6.2011, 17:40
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 22.11.2010 Пользователь №: 2207 Спасибо сказали: 0 раз(а) Репутация: 0 |
На QMainWindow находится пару QTableWidget'ов для того, чтобы раз в полсекунды выводить в них некоторый массив данных. QTableWidget используются только для отображения, редактировать их нельзя.
Для заполнения одной строчки таблицы использую следующую процедуру: Раскрывающийся текст Загрузка процессора при этом ~40%, gui приложения безбожно тормозит и похоже таймер из класса приема данных из внешнего устройства периодически заваливается и не передает их в слот основного класса. Изначально и подумать не мог, что QTableWidget окажется причиной такого поведения. Пытался найти ошибку в общении с внешним устройством, расчетах или провальные места в работе с контейнерами, но стоило убрать вывод половины значений в таблицу, программа начинала работать в разы быстрее. Возможно необходимо работать с этим виджетом совершенно по-другому или вообще использовать иной виджет для этой задачи. help |
|
|
Litkevich Yuriy |
8.6.2011, 17:54
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
используй Модель/представление. Эти вспомогательные виджеты предназначены для примитивных вещей
|
|
|
Алексей1153 |
8.6.2011, 19:16
Сообщение
#3
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
а когда окно не показано на экране, тормоза остаются ?
|
|
|
Fitz |
10.6.2011, 11:07
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 22.11.2010 Пользователь №: 2207 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Алексей1153 |
10.6.2011, 11:11
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Если таблица неинтерактивная, нарисуй сетку сам, да сделай распечатку цветных циферок в ячейках. Будет летать
Ещё вариант - в момент заполнения той таблицы отключай автоперерисовку (если есть), а после заполнения включай обратно. Должна такая штука быть по любому |
|
|
Гость_Гость_* |
11.6.2011, 22:06
Сообщение
#6
|
Гости |
|
|
|
Fitz |
22.6.2011, 12:34
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 22.11.2010 Пользователь №: 2207 Спасибо сказали: 0 раз(а) Репутация: 0 |
Нарисовал таблицу руками через paintEvent, после каждого появления данных для отображения вызываю this->update() и в paintEvent'e перерисовываю табличку. Все залетало.
Но возник следующий баг. При открытии QFileDialog:
Окно выбора файла начинает вести себя неадекватно, не отрисовываются иконки, пропадает список папок и прочие графические артефакты. P.S. Вероятно лучше действительно сделать через Модель/представление, но по документации я не понял, в чем соль. Или необходимо свой виджет писать для представления? Через простое рисование получилось проще, но это все-таки попахивает костылями. |
|
|
skmdeveloper |
23.6.2011, 12:57
Сообщение
#8
|
Студент Группа: Участник Сообщений: 23 Регистрация: 18.9.2009 Пользователь №: 1107 Спасибо сказали: 0 раз(а) Репутация: 0 |
Виджет можно не писать? использовать QTtableView нужно написать класс модели, унаследованной от QAbstractTableModel.
Например так:
http://doc.qt.nokia.com/latest/itemviews-pixelator.html Сообщение отредактировал skmdeveloper - 23.6.2011, 12:58 |
|
|
Fitz |
14.7.2011, 17:05
Сообщение
#9
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 22.11.2010 Пользователь №: 2207 Спасибо сказали: 0 раз(а) Репутация: 0 |
Соорудил модель-представление, все залетало как надо.
Всем спасибо. |
|
|
Текстовая версия | Сейчас: 2.1.2025, 17:52 |