crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 13:41