The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Один процесс для 2-х QApplicaiton"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Один процесс для 2-х QApplicaiton"  
Сообщение от leha email(ok) on 13-Окт-06, 21:15 
Пытаюсь сделать следующую вешь:
Есть приложение с графическим интерфейсом QT. Приложение работает с платами PC104, в частности с платой реле DM6952HR (не суть). Хочется сделать эмулятор платы: если включён #include <rtd/Dm6952HrDevice.h>, то приложение работает с самой платой. А если, наприммер подключить <rtd/emul/Dm6952HrDevice_e.h>, то появляется окно Qt с отображением состояния реле. При этом остальной код не менять! В общем-то получилось. НО. Библиотека эмулятора не может использовать QApplication. Т.к. если в ней реализовать стандартные
(...)
QApplication *pApp = new QApplication( argc, argv );
QWidget *pWidget = new QWidget();
(...)
то при обращении к библиотеке из основного процесса получаю ошибку "QApplication: There should be max one application object" и подвисшее приложение. Если убрать определение QApplication, то все нормально. Однако получается не гибко, ибо если основной процесс не будет использовать Qt, то программа наоборот требует QApplication.
Собственно вопрос: как определить - есть-ли уже QApplication или нет? Это даст возможность написать универсальное решение.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Один процесс для 2-х QApplicaiton"  
Сообщение от Drg0n7 on 14-Окт-06, 14:23 
>Пытаюсь сделать следующую вешь:
>Есть приложение с графическим интерфейсом QT. Приложение работает с платами PC104, в частности с платой реле DM6952HR (не суть). Хочется сделать эмулятор платы: если включён #include <rtd/Dm6952HrDevice.h>, то приложение работает с самой платой. А если, наприммер подключить <rtd/emul/Dm6952HrDevice_e.h>, то появляется окно Qt с отображением состояния реле. При этом остальной код не менять! В общем-то получилось. НО. Библиотека эмулятора не может использовать QApplication. Т.к. если в ней реализовать стандартные
>(...)
>QApplication *pApp = new QApplication( argc, argv );
>QWidget *pWidget = new QWidget();
>(...)
>то при обращении к библиотеке из основного процесса получаю ошибку "QApplication: There
>should be max one application object" и подвисшее приложение. Если убрать
>определение QApplication, то все нормально. Однако получается не гибко, ибо если
>основной процесс не будет использовать Qt, то программа наоборот требует QApplication.
>
>Собственно вопрос: как определить - есть-ли уже QApplication или нет? Это даст
>возможность написать универсальное решение.

Возможно я не совсем точно понял вопрос. Но проверить существует объект QApplication или нет можно в Qt через глобальный указатель qApp.
Вырезка из мануала:
qApp
A global pointer referring to the unique application object. It is equivalent to the pointer returned by the QCoreApplication::instance() function.
Only one application object can be created.
See also QCoreApplication::instance().

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру