Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: OKTA от Октябрь 14, 2014, 14:34



Название: QFileDialog statuc functions
Отправлено: OKTA от Октябрь 14, 2014, 14:34
Товарищи, подскажите, что происходит, если я запускаю что-нибудь типа getOpenFileName в потоке, отличном от главного?
Он так и выполнится в главном потоке, а потом вернет управление или как?

Судя по экспериментам так, но хочется услышать подтверждение)


Название: Re: QFileDialog statuc functions
Отправлено: kambala от Октябрь 14, 2014, 14:41
судя по исходникам, dialog->exec() просто запускается (видимо в текущем потоке)


Название: Re: QFileDialog statuc functions
Отправлено: OKTA от Октябрь 14, 2014, 15:17
А чего же он тогда при простом ручном запуске QFileDialog::exec() начинает матерно ругаться в дебаг по поводу того, что аяй-яй запускать виджеты вне главного потока?


Название: Re: QFileDialog statuc functions
Отправлено: gil9red от Октябрь 14, 2014, 15:21
А чего же он тогда при простом ручном запуске QFileDialog::exec() начинает матерно ругаться в дебаг по поводу того, что аяй-яй запускать виджеты вне главного потока?

Может потому что, все что рисуется должно быть в главном потоке...  :)


Название: Re: QFileDialog statuc functions
Отправлено: OKTA от Октябрь 14, 2014, 15:35
Ну. а статические ф-ии почему не ругаются?))


Название: Re: QFileDialog statuc functions
Отправлено: carrygun от Октябрь 15, 2014, 04:46
Ну. а статические ф-ии почему не ругаются?))

Потому что они используют апишки и нативную ерунду?


Название: Re: QFileDialog statuc functions
Отправлено: Igors от Октябрь 15, 2014, 11:05
Товарищи, подскажите, что происходит, если я запускаю что-нибудь типа getOpenFileName в потоке, отличном от главного?
Он так и выполнится в главном потоке, а потом вернет управление или как?

Судя по экспериментам так, но хочется услышать подтверждение)
Нездоровая затея, никто не обещал что диалог thread-safe, тем более на всех платформах. Напрашивается использование BlockedConnection. А чтобы посмотреть что где я просто давлю в отладчике break и вижу где стоят все нитки (когда диалог показался). На Вындоуз это не очень действенно, но на OSX прекрасно