Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Vlcyrex от Февраль 10, 2009, 21:59



Название: QDialog и QThread
Отправлено: Vlcyrex от Февраль 10, 2009, 21:59
Извините за три глупых вопроса :)
Ситуация следующая - работает основная программа, в параллельном потоке идёт пинг соседних компьютеров. Если пинг не проходит появляются окна QDialog с сообщениями. Вопросы:

1). Когда делаю параллельный поток для пинга, если использую QTimer, то параллельности уже нет - пинг тормозит основную программу, если просто использую бесконечный цикл со sleep(), то всё норм. Кто знает почему?))

2). Нужно чтобы появлялось бесконечное множество окон. В цикле следующая строка
Mywarn * my_warn = Mywarn();
Где Mywarn наследник класса QDialog.
В итоге указатель перемещается по памяти, создавая новые окна.
Вопрос: когда я нажимаю кнопку Close на старых окнах - память очищается?
В QDialog установлен флаг WFlags f=Qt::WDestructiveClose.

3). Стала появлятся следующая ошибка, если при создании первого такого окна - основная программа раскрыта на экран, то программа падает по segmentation fault. Если же дело происходит в трее - то нет. падает программа на строке, которая выше.


Название: Re: QDialog и QThread
Отправлено: Swappp от Февраль 10, 2009, 22:12
Вся работа с GUI должна происходить в основном потоке.
Цитировать
1). Когда делаю параллельный поток для пинга, если использую QTimer, то параллельности уже нет - пинг тормозит основную программу, если просто использую бесконечный цикл со sleep(), то всё норм. Кто знает почему?))
К какому потоку относится QTimer?


Название: Re: QDialog и QThread
Отправлено: Vlcyrex от Февраль 10, 2009, 22:25
К дочернему. Где происходит пинг.


Название: Re: QDialog и QThread
Отправлено: pastor от Февраль 10, 2009, 22:42
В каком потоке создается QDialog?


Название: Re: QDialog и QThread
Отправлено: Vlcyrex от Февраль 11, 2009, 16:10
QDialog создаётся в основном потоке по сигналу из дочернего-паралельного.


Название: Re: QDialog и QThread
Отправлено: ритт от Февраль 11, 2009, 16:16
QDialog создаётся в основном потоке по сигналу из дочернего-паралельного.
как может быть дочерний поток одновременно параллельным? :)
я понимаю что имелось в виду, но всё-равно звучит несуразно...как пересекающиеся параллельные прямые :)