crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QAccessibility
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ViGOur Дата 9.2.2009, 23:20
 
Цитата(SABROG @ 9.2.2009, 16:23) *
А как я через сокет передам указатель на QObject?
По всей видимости прийдется писать для обертку для COM/DCOM - CORBA и использовать в них конечные точки. Правда не знаю есть ли они в CORBA.
Но это как сам наверное понимаешь еще то занятьице. :)

Цитата(SABROG @ 9.2.2009, 22:01) *
Обидно, что QProcess не умеет возвращать указатель на QApplication дочернего процесса на базе библиотеки Qt или приаттачиваться к чужим процессам.
Если обратится к виндовому API, то там это реализуется вроде бы только хаками описанными у Джеффри Рихтера, а под никсами даже и не знаю возмоно ли такое.
SABROG Дата 9.2.2009, 22:01
  В общем получается следующая картина. Qt автоматически создает accessible интерфейсы для каждого стандартного виджета. Класс QAccessible является клиентом, а класс QAccessibleInterface - сервером. При этом root объектом является указатель на QApplication. Чтобы получить доступ к дочерним QObject'aм надо использовать метод QAccessibleInterface::navigate(). В зависимости от параметров будут возвращаться указатели либо на детишек (child), либо на сестрёнок (sibling) и т.п. Есть еще загадочный базовый класс QAccessiblePlugin для подключаемых плагинов, в принципе они могут выступать в роли сервера.

Я еще не пробовал гонять эти классы и наверное не буду, т.к. получается, что чужой софт, который использует API ОС где выполняется программа - имеет доступ к моим интерфейсам, а сама Qt не может наладить связь со своими же программами выполняющимися параллельно. Максимум - с чужими плагинами и она должна знать об их существовании. Обидно, что QProcess не умеет возвращать указатель на QApplication дочернего процесса на базе библиотеки Qt или приаттачиваться к чужим процессам.

Я сначала думал использовать эти классы другим образом, чтобы получить список всех QObject'ов. Но к сожалению всеми объектами, которые могут быть предоставлены являются QWidget'ы, а к ним доступ есть и без этих сложных интерфейсов. В общем классы писались для ОС, чтобы она могла читать текст на компонентах для слепых и управлять программой внешними устройствами отличными от клавиатуры и мышки. Ничего более полезного из этого не извлечь.
SABROG Дата 9.2.2009, 16:23
 
Цитата(ViGOur @ 9.2.2009, 16:12) *
Думаю в данном случае нужно использовать только сокеты, а QProcess не поможет.


Предположим. А как я через сокет передам указатель на QObject? У меня складывается впечатление, что на Qt можно писать только сервера...

Ну да
A Qt application will typically be an AT-Server, but specialized programs might also function like AT-Clients.

Видимо второй случай это когда приложение является одновременно и клиентом и сервером, хотя кто знает...
ViGOur Дата 9.2.2009, 16:12
 
Цитата(SABROG @ 9.2.2009, 16:10) *
очу понять как из одной Qt программы достучаться до другой Qt программы, надо ли для этого использовать QProcess или что-то еще.
Думаю в данном случае нужно использовать только сокеты, а QProcess не поможет.
SABROG Дата 9.2.2009, 16:10
  Создал форму и бросил на неё кнопку. Скачал отсюда AccExplorer32 и отсюда UI Accessibility Checked

Запустил программу, выбрал окно. Я так понимаю Qt сама предоставляет доступ к своим классам и мне в принципе не надо ничего оборачивать или на картинке должно быть что-то другое?

Не нашел примеров клиента/сервера. Хочу понять как из одной Qt программы достучаться до другой Qt программы, надо ли для этого использовать QProcess или что-то еще.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 22.5.2024, 4:20