Могу ли я использовать QTimer для периодического обновления формы, в то же время позволяя пользователю редактировать некоторые поля? - PullRequest
0 голосов
/ 27 января 2010

У меня есть форма, в которой я хочу периодически обновлять свои значения (в основном метки, но 2 комбинированных списка и 1 спинбокс). Я делал это раньше с QThread, но на этот раз я хотел бы сделать это с QTimer. Будет ли это нормально, или это может создать проблемы, как замораживание графического интерфейса. В форме есть несколько полей, которые можно редактировать и периодически обновлять.

ОБНОВЛЕНИЕ: я удаляю QTimer, потому что это вызывает проблемы.

Ответы [ 3 ]

2 голосов
/ 27 января 2010

Я не думаю, что обновление из GUI будет иметь какое-либо значение по сравнению с обновлением из QThread - рисование элементов управления в любом случае происходит в потоке GUI (= main). Если ваши значения не требуют большого количества вычислений перед установкой, вы можете безопасно сделать это из потока GUI.

Единственное, на что нужно обратить внимание, - это не обновлять конкретное значение, если пользователь в данный момент редактирует его - я думаю, это будет для него настоящим сюрпризом :) Если, конечно, у вас нет специального дизайна пользовательского интерфейса ...

0 голосов
/ 02 февраля 2010

если все, что вы делаете, это обновляете форму, то с вами все должно быть в порядке, но если вы вызываете длинную функцию, требующую вызова QCoreApplication :: processEvents (); тогда ты не должен Я попытался использовать таймер, и у меня возникли проблемы, которые исчезли, как только я удалил таймер и использовал поток, в котором я посылал сигнал основному потоку, чтобы обновить форму после завершения работы.

0 голосов
/ 27 января 2010

Я сделал это в потоке GUI и не столкнулся с какими-либо проблемами. Для этого мне нужно было обновить таймер для всплывающего окна (отображалось что-то вроде «Повторное подключение через [время] секунд», и я обновлял [время], когда таймер срабатывал)

Вы должны быть осторожны, чтобы не выполнять какие-либо интенсивные вычисления ЦП (т.е. не вычислять некоторые значения Mandlebrot в потоке GUI или что-то в этом роде) - это заморозит поток GUI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...