LINUX.ORG.RU

QT в треде


0

0

Здраствуйте... Я вот экспериментирую с программирование интерфейса (GUI). На каком-то онлайн ресурсе узнал что QT приложение должно идти в main thread-е. Решил проверить. Написал простейшую программу, все спокойно пошло. Ни ошибок, ни руганий. Все как часы...

Так в чем может возникнуть проблема при создании qt gui-шки которая будет работать не в main-thread-е? Может там есть какие-то глубокие проблемы, которые простейшей программой не затрагиваются...

А может тот ресурс "нагло врет"... Если есть знающие на 100% отзовитесь пожалуйста=)

QApplication может обратиться к argc и к argv в любой момент работы приложения.

ale ★★
()
Ответ на: комментарий от summatus

>>А может тот ресурс "нагло врет" >Там речь о Qt3 идёт. Да действительно речь идет о QT3. Но и я испытвал на QT3 и там все нормально работало...

>QApplication может обратиться к argc и к argv в любой момент работы >приложения.

А как это может вызвать ошибку или еще какойто конфликт?

usefull
() автор топика

В документации Qt4 тоже есть сабжевое предостережение, но как пишут люди, все проблемы, которые могут из-за этого возникнуть - передача сигналов, и баги в MacOSX. В Qt3 кстати тоже всё нормально работает.

summatus
()
Ответ на: комментарий от usefull

>А как это может вызвать ошибку или еще какойто конфликт?

Никак, туда можно вообще нулевые указатели предать.

summatus
()
Ответ на: комментарий от usefull

>А как это может вызвать ошибку или еще какойто конфликт?

Например такой _надуманный_ код может вызывать сегфолт:

QApplication* app = NULL;

void initializeApp (int argc, char** argv)
{
app = new QApplication (argc, argv);
}

int main (int argc, char** argv)
{
initializeApp (argc, argv);
int result = app->exec ();

// полезная работа. И последующее удаление QApplication

return result;
}

ale ★★
()

если не хочешь проблем с event loop, то не изобретай велосипедов, нет никакой реальной причины выносить гуй или его часть в тред, треды нужны для тяжёлых расчётов, из-за которых гуй замораживается, в Qt это вообще просто, шлёшь треду сигнал с входными данными, он тебе позже ответный с выходными (эта схема хорошо видна в примере про множество Мандельброта из доков)

PayableOnDeath
()

Я искренне пытался запихать под оффтопиком всю гуёвую часть программы (Qt4) в отдельную DLL, и из другой программы, ничего про Qt не знающей, вызывать гуй. У меня ничего не получилось. Вот.

one_more_hokum ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.