Здравствуйте, гость ( Вход | Регистрация )
|
Sami |
6.5.2008, 12:52
Сообщение
#1
|
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 28.4.2008 Пользователь №: 160 Спасибо сказали: 0 раз(а) Репутация: 0
|
Есть проги которые написаны на различных библиотеках (MFC, OWL и тд)
Все они юзают одну длл, которая при этом может выводить окно с текстом и реагировать на клавиатуру. QApplication должен быть создан в первом потоке. И как быть, если вызвать QApplication в первом потоке длл не может, да и не уверен, что длл вызывают из первого. Что делать? Менять QT на что-то другое? И кстати а почему QApplication должен быть создан только в main (). С чем это связано? |
|
|
|
![]() |
|
Tonal |
7.5.2008, 10:23
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17
|
Если окно модальное - то не парься - создавай QApplication в главном потоке, показывай своё окно.
При закрытии - удаляй окно и удаляй QApplication. Если окно не модальное, то смотри в сторону Qt/MFC Migration Framework. Там есть QMfcApp - который корректно работает в главном потоке совместно с остальными Framework-ами, QWinWidget - который может быть дитём WinApi окна и QWinHost - который может быть родителем для WinApi окна. Я использовал Qt/MFC Migration Framework для написания плагинов к приложению на delphi. Правда потом получилось преобразовать работу по 1му варианту. Сообщение отредактировал Tonal - 7.5.2008, 10:25 |
|
|
|
|
Sami |
13.5.2008, 15:30
Сообщение
#3
|
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 28.4.2008 Пользователь №: 160 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Tonal @ 7.5.2008, 13:23) Link Если окно модальное - то не парься - создавай QApplication в главном потоке, показывай своё окно. При закрытии - удаляй окно и удаляй QApplication. Если окно не модальное, то смотри в сторону Qt/MFC Migration Framework. Там есть QMfcApp - который корректно работает в главном потоке совместно с остальными Framework-ами, QWinWidget - который может быть дитём WinApi окна и QWinHost - который может быть родителем для WinApi окна. Я использовал Qt/MFC Migration Framework для написания плагинов к приложению на delphi. Правда потом получилось преобразовать работу по 1му варианту. Для WinApi понятно. И большое спасибо. А как обстоит дело в Linux'е. Там хоть DLL нет, но есть разделяемые библиотеки. Можно ли такую ситуацию скомпилить на linux? Скоро по видимому этот вопрос встанет. Тобишь есть прога которая вызывает сошку, которая показывает не модальное окно. Что прога юзает GTK, QT, ncurses или что-то другое заранее не известно.
Причина редактирования: сервер притормаживает :(
|
|
|
|
Sami окно в динамической библиотеке 6.5.2008, 12:52
ViGOur А зачем тебе вызывать в QApplication из DLL?
В DLL... 6.5.2008, 13:32
Sami Цитата(ViGOur @ 6.5.2008, 16:32) А зачем ... 6.5.2008, 17:04
Tonal Ну если ncurses, то там и X-ы могут быть не запуще... 14.5.2008, 7:20
Sami Цитата(Tonal @ 14.5.2008, 10:20) Ну если ... 14.5.2008, 9:00
Tonal Все потоки в приложении равны, но один - ровнее.
... 14.5.2008, 10:46![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 5:49 |