2013-03-21 3 views
3

Я работаю над многопоточным приложением обработки изображений. Я добавил в графический интерфейс на основе QT для изменения некоторых параметров, которые мне приходится экспериментировать с большим количеством, а не загружать их все из файла настроек каждый раз, когда я запускаю программу или должен вводить их. Мне также хотелось бы, чтобы GUI, чтобы отобразить некоторую основную информацию из каждого из потоков, чтобы я мог их контролировать. В настоящее время у меня есть потокобезопасные методы передачи информации между потоками обработки изображений, и я хотел бы как-то опросить часть этой информации из потока QT примерно каждую секунду, чтобы я мог отображать некоторую обратную связь в пользовательском интерфейсе.Опрос переменной в QT один раз в секунду

Мое требование состоит в том, что я не хочу включать код QT в потоки обработки изображений для обновления пользовательского интерфейса. Я предпочел бы, чтобы опрос пользовательских интерфейсов использовал методы, которые я использую для передачи информации между потоками. Я хочу, чтобы часть обработки изображений моей кодовой базы была автономной и не зависела от QT для запуска. Как я могу опросить глобально доступную функцию для обновления интерфейса QT?

ответ

8

QTimer - твой друг.

QTimer *timer = new QTimer(this); 
connect(timer, SIGNAL(timeout()), &someQObjectDerivedClassInstance, SLOT(doYourThing())); 
timer->start(1000); 

Или в Qt5 и C++ 11 вы можете напрямую подключиться к лямбда. Хотя использование слота гарантирует, что вы получите очереди в случае, если вы подключаетесь к объекту, живущему в другом потоке.

Смежные вопросы