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