Получить информацию от "QWidget" - PullRequest
2 голосов
/ 10 июля 2009

У кого-нибудь есть идеи, как получить текст из окна QWidget в приложении Windows? Вот как это выглядит, когда я смотрю на него с помощью Winspector:

http://www.tightpoker.com/images/ftplobby.jpg

Я бы опубликовал это как изображение, но, очевидно, новым пользователям не разрешено использовать теги изображений ...

Не удается найти подклассы (например, для списка турниров). Я пытаюсь найти способ вызова списка в пользовательском приложении, которое пишется для сбора данных.

Ответы [ 2 ]

1 голос
/ 11 июля 2009

Qt уже давно предоставляет класс QAccessibility, позволяя программам чтения с экрана, таким как Narrator (Start-> Run ...-> narrator) или Jaws, обрабатывать элементы управления и читать их пользователю. Насколько я могу судить, все стандартные виджеты поддерживают эту функцию начиная с qt4.

К сожалению, когда разработчик решает реализовать свой собственный элемент управления на основе QWidged и не реализует QAccessibleInterface, тогда созданный класс «отключен» и невидим для любого вида инспектора или программы чтения с экрана. Это становится просто набором пикселей на экране.

Попробуйте запустить рассказчик и обратите внимание на то, что он скажет после открытия ftplobby: «... не содержит других известных элементов управления» означает, что вам, вероятно, не повезло, и вам следует начать изучать OCR и симулированные клики.

0 голосов
/ 11 июля 2009

Когда у вас есть код, выполняющийся в целевом приложении, вы можете просто пройтись по иерархии QObject, начиная с QApplication :: topLevelWidgets () и используя QMetaObject :: userProperty () .

Если у вас нет кода, выполняющегося в целевом приложении, я не знаю, о чем. Я почти уверен, что нет никакого способа, так как и Squish, и KD Executor (Google для KDExecutor, используют кеш Google, сайт в настоящее время обновляется) должны вводить код (с помощью предварительной загрузки) в AUT (тестируемое приложение).

...