![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
vizir1989 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 14.5.2012 Пользователь №: 3377 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
у меня есть некая процедура, которая в цикле добавляет данные в таблицу. Для того, чтобы во время добавления данных интерфейс не тормозил, в цикл добавлена следующая строчка:
Так же на форме есть кнопка (QPushButton), у которого есть меню. Если во время добавления данных в таблицу нажать на кнопку, то появляется меню кнопки, при этом процесс добавления данных в таблицу прекращается. Пока меню отображается данные не добавляются, как только меню убирается, данные продолжают добавляться. Вопрос, как сделать так, чтобы при появление меню добавление данных не прекращалось? |
|
|
![]() |
Trisch |
![]()
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: ![]() ![]() ![]() |
Функция qApp->processEvents() используется во время "простоя", то есть, если программа, к примеру, занимается копированием файлов, вы можете вызвать с помощью этой функции функцию, которая будет показывать что программа занята (к примеру, вращающиеся песочные часы). При выходе программы из "простоя" вышеуказанная функция завершается.
Для добавления данных в таблицу используйте отдельный поток. За это отвечает класс QThread. Сообщение отредактировал Trisch - 17.3.2014, 15:41 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Функция qApp->processEvents() используется во время "простоя", то есть, если программа, к примеру, занимается копированием файлов, вы можете вызвать с помощью этой функции функцию, которая будет показывать что программа занята (к примеру, вращающиеся песочные часы) Неверно. Эта функция предназначена для обработки событий, когда программа занята. Т.е. автор темы пользуется ею правильно.Для добавления данных в таблицу используйте отдельный поток. Это правильная мысль.
|
|
|
vizir1989 |
![]()
Сообщение
#4
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 14.5.2012 Пользователь №: 3377 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Функция qApp->processEvents() используется во время "простоя", то есть, если программа, к примеру, занимается копированием файлов, вы можете вызвать с помощью этой функции функцию, которая будет показывать что программа занята (к примеру, вращающиеся песочные часы) Неверно. Эта функция предназначена для обработки событий, когда программа занята. Т.е. автор темы пользуется ею правильно.Для добавления данных в таблицу используйте отдельный поток. Это правильная мысль.Дело в том, что я добавляю в таблицу QTableWidget\QTableView, а Qt не рекомендует работать с этими объектами в отдельном потоке. Я использовал QtConcurrent::run, на что получал кучу предупреждений во время выполнения программы: QPixmap: it is not safe to use pixmap outside the GUI thread QPainter::begin: Paint device returned == 0, type: 2 QPainter::setRenderHint: Painter must be active to set rendering hints QPainter::end: Painter not active, aborted. И мне это не очень нравится. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 21.6.2025, 10:34 |