QT: получить имя класса объекта - PullRequest
23 голосов
/ 22 ноября 2010

Я пишу тестовое приложение, которое имитирует нажатие клавиш другого приложения. Для каждого нажатия клавиши я должен проверить, отображается ли правильное окно / форма. Поэтому я получаю указатель на отображаемое окно и получаю заголовок окна. Однако не во всех окнах / формах отображаются заголовки окон. Поэтому я думаю, что было бы лучше вместо этого получить название класса. Как я могу получить название класса?

QWidget *pWin = QApplication::activeWindow();

когда я пытаюсь:

pWin->className(); 

чтобы получить название класса, я получаю:

"ошибка: в классе QWidget нет члена с именем 'className'"

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

Ответы [ 2 ]

50 голосов
/ 22 ноября 2010

Попробуйте использовать метаобъект .

pWin->metaObject()->className();  
0 голосов
/ 22 ноября 2010

Вы также можете проверить заголовок typeinfo. Используя оператор typeid на вашем объекте, вы получаете экземпляр type_info, который описывает тип вашего объекта. Проверить: http://www.cplusplus.com/reference/std/typeinfo/type_info/

...