2009-11-01 2 views
4

Может кто-нибудь помочь мне понять, в чем проблемы при запуске нескольких QApplication s на Qt для встроенной Linux? Пожалуйста, укажите мне документацию по темам рассылки.Проблемы с несколькими QApplications

При просмотре некоторых писем в списках рассылки я видел несколько комментариев, которые говорят, что запуск нескольких QApplication s в Qt не поддерживается дизайном и почему вообще это требуется? Как я могу это понять более четко?

Однако, читая документ «Qt для встроенной архитектуры Linux», я не нашел ничего, что говорит о том, что мы не должны запускать несколько экземпляров QApplication одновременно.

Я выполняю два QApplication s на встроенной платформе Linux (а не на ПК) и один из них в полноэкранном режиме. Тот, который находится в режиме fullScreen, не получает фокус клавиатуры, хотя он принимает mousePress событий. Если такое же приложение запущено в normalMode, оно получает событие mousePress, за которым следует focusInEvent`.

Может ли кто-нибудь предоставить указатели на него?

+1

Вы имеете в виду несколько экземпляров QApplication в одном процессе или несколько процессов с одним QApplication? – rohanpm

+0

Я имел в виду несколько экземпляров QApplication в нескольких процессах. – beedroid

ответ

2

QApplication - это одноэлементный класс, поэтому его «одиночный» по дизайну. У вас может быть только один объект QApplication для каждой программы.

Но в Qt нет встроенного ограничения количества программ qt с использованием класса QApplication, который вы можете выполнять параллельно. В то же время вы можете иметь более одной программы, используя qt (и, следовательно, очень вероятную QApplication).

Возможно, это как-то запуталось в ваших списках рассылки.

0

Я предполагаю, что одно QApplication примет событие мыши или событие клавиатуры, а значит, другое не получит его.

Вероятно, он немного случайен относительно того, какое QApplication принимает, какие события основаны на том, что в QOpplications имеется так много QApplications.

Я не могу представить, чтобы использовать случай, по которому вы хотели бы получить несколько QApplications внутри процесса. Не могли бы вы расширить то, что вы пытаетесь сделать?

+0

Оригинальный плакат разъяснил, что он имел в виду несколько процессов с QApplication, а не несколько QApplications в одном процессе. – rohanpm

3

Вы можете запускать несколько процессов каждый с одним QApplication просто отлично.

Однако, с Qt для встроенной Linux, только один из них должен быть сервером QWS. Другими словами, вы должны начать первый процесс с `-qws ', и все остальные процессы без него.

+0

То, что я сделал. Выполнено одно приложение как QWS-сервер и с fullScreen. Второе приложение, просто как клиент и в normalMode. Основные окна обоих из них получают события нажатия мыши. Однако приложение, находящееся на переднем плане (второе приложение), самостоятельно принимает события нажатия клавиши. Даже если я нажимаю на приложение fisrt (QWS Server, fullScreen), он не получает focusInEvent, следовательно, не имеет фокуса клавиатуры и никаких событий нажатия клавиш. Я хочу, чтобы это приложение также получало ключевые события для прессы. – beedroid

Смежные вопросы