Russian Qt Forum
Ноябрь 24, 2024, 10:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFileDialog statuc functions  (Прочитано 3611 раз)
OKTA
Гость
« : Октябрь 14, 2014, 14:34 »

Товарищи, подскажите, что происходит, если я запускаю что-нибудь типа getOpenFileName в потоке, отличном от главного?
Он так и выполнится в главном потоке, а потом вернет управление или как?

Судя по экспериментам так, но хочется услышать подтверждение)
« Последнее редактирование: Октябрь 14, 2014, 14:38 от OKTA » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Октябрь 14, 2014, 14:41 »

судя по исходникам, dialog->exec() просто запускается (видимо в текущем потоке)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
OKTA
Гость
« Ответ #2 : Октябрь 14, 2014, 15:17 »

А чего же он тогда при простом ручном запуске QFileDialog::exec() начинает матерно ругаться в дебаг по поводу того, что аяй-яй запускать виджеты вне главного потока?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Октябрь 14, 2014, 15:21 »

А чего же он тогда при простом ручном запуске QFileDialog::exec() начинает матерно ругаться в дебаг по поводу того, что аяй-яй запускать виджеты вне главного потока?

Может потому что, все что рисуется должно быть в главном потоке...  Улыбающийся
Записан

OKTA
Гость
« Ответ #4 : Октябрь 14, 2014, 15:35 »

Ну. а статические ф-ии почему не ругаются?))
Записан
carrygun
Гость
« Ответ #5 : Октябрь 15, 2014, 04:46 »

Ну. а статические ф-ии почему не ругаются?))

Потому что они используют апишки и нативную ерунду?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Октябрь 15, 2014, 11:05 »

Товарищи, подскажите, что происходит, если я запускаю что-нибудь типа getOpenFileName в потоке, отличном от главного?
Он так и выполнится в главном потоке, а потом вернет управление или как?

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


Страница сгенерирована за 0.062 секунд. Запросов: 23.