Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Даша от Декабрь 19, 2012, 13:37



Название: Обновление интерфейса типа view->upate() (в KDevelop было)
Отправлено: Даша от Декабрь 19, 2012, 13:37
По кнопке запускаю алгоритм, в котором переодически textedit->append("полет нормальный")
Как же пограмотнее сделать, что бы сообщения в течении работы появлялись,а не по завершении алгоритма?
В KDevelop было view->upate(), а в Qt что все таки поток создавать?


Название: Re: Обновление интерфейса типа view->upate() (в KDevelop было)
Отправлено: Bepec от Декабрь 19, 2012, 13:45
qApp->processEvents().
А ещё лучше выносить в отдельный поток.


Название: Re: Обновление интерфейса типа view->upate() (в KDevelop было)
Отправлено: gil9red от Декабрь 19, 2012, 14:34
"Периодически" это в цикле или по таймеру?
хотя какая разница, просто вставляете, например, перед textedit->append("полет нормальный") qApp->processEvents() и радуетесь, что интерфейс программы не виснет :)
Вот только нужно не забывать о подключении QApplication
Второй вариант: через потоки
самый простой вариант переопределяйте метод run() класса QThread, и запускайте поток, впрочем в документации это подробно описано ;)


Название: Re: Обновление интерфейса типа view->upate() (в KDevelop было)
Отправлено: skandinavijos от Декабрь 19, 2012, 15:14
а в чем проблема создать поток? переопределить один метод и связать одну пару слот-сигнал. к тому же это более кошерно.



Название: Re: Обновление интерфейса типа view->upate() (в KDevelop было)
Отправлено: gil9red от Декабрь 19, 2012, 23:15
Иногда проще добавить одну строчку, чем наследоваться от класса, переопределять в нем какие то методы, и в них что-то помещать - мороки меньше :)
И пусть автор темы сама решает, что больше подходит по заданию ;)


Название: Re: Обновление интерфейса типа view->upate() (в KDevelop было)
Отправлено: Даша от Декабрь 20, 2012, 09:59
Спасибо, народ!


Название: Re: Обновление интерфейса типа view->upate() (в KDevelop было)
Отправлено: skandinavijos от Декабрь 20, 2012, 19:52
не, просто от processEvent, например, окно не отрисовывается заново, если его перекрыть другим. с потоком такого не было. во всяком случае с моим алгоритмом, который почти пол часа считал - было так, хотя может и я что-то не так делал