Название: CoInitializeEx и зависание getOpenDialog Отправлено: nvek от Май 04, 2017, 12:13 Я не знаю к какому разделу эта тема относится, к гуи или сети.
в мейне: Код: ::CoInitializeEx(0, COINIT_MULTITHREADED); ну и где то по сигналу вызываю открытие документа уже в главной форме Код: void MainForm::open() закоментарив инициилизацию кома все нормально.. так же как и заменить первую строчку на Код: ::CoInitializeEx(0, COINIT_APARTMENTTHREADED); странно Название: Re: CoInitializeEx и зависание getOpenDialog Отправлено: mitrich от Май 04, 2017, 13:00 На форумах пишут, что функция GetOpenFileName (которая показывает нативный файловый диалог) работает только в single-threaded apartment: https://social.msdn.microsoft.com/Forums/vstudio/en-US/366373e9-9216-4a80-b4d5-25da059d4a33/getopenfilename-fails-on-windows-7-2008-using-visual-studio-2010?forum=vcgeneral
В оф. документации про это ничего не нашёл. Можно попробовать либо использовать ненативный диалог (dlg.setOptions(DontUseNativeDialog)), либо обрамлять вызовы диалога так (понятия не имею, будет ли это работать): Код
Название: Re: CoInitializeEx и зависание getOpenDialog Отправлено: nvek от Май 04, 2017, 14:26 Проверил, действительно не нативный диалог работает, но там по умолчанию все на английском, а это не устраивает
Название: Re: CoInitializeEx и зависание getOpenDialog Отправлено: kambala от Май 04, 2017, 15:19 файл локализации qt_ru.qm надо подключить
Название: Re: CoInitializeEx и зависание getOpenDialog Отправлено: mitrich от Май 04, 2017, 15:29 В методе main():
Код
Название: Re: CoInitializeEx и зависание getOpenDialog Отправлено: Alex Custov от Май 04, 2017, 19:20 народ, вы ещё на Qt4 пишите? :) В Qt5 надо грузить qt_ru.qm (он почти пустой, к слову) и qtbase_ru.qm.
Название: Re: CoInitializeEx и зависание getOpenDialog Отправлено: mitrich от Май 04, 2017, 23:58 Он и есть пустой. Данных не содержит, а содержит ссылки на другие каталоги, которые и будут загружены.
Код
Название: Re: CoInitializeEx и зависание getOpenDialog Отправлено: nvek от Июль 10, 2017, 15:41 возвращаюсь к моей старой теме, ибо очень интересует этот вопрос
сделав тестовый проест, который делает почти все тоже что и мой до открытия диалога долго думав, я так ничего не понял. Поставил в конструктор мейнформ, тесть поставил инициилизацию кома после того как инициилизируется qt все заработало! ура! но... в тестовом проекте ком инициилизируется раньше qt в чем логика??? ??? ??? ??? ??? было: Код: int main(int argc, char *argv[]) Код: MainForm::MainForm() : (╯°□°)╯︵ ┻━┻ |