web-dev-qa-db-ja.com

QT:オブジェクトのクラス名を取得する

別のアプリケーションのキー押下をシミュレートするテストアプリを作成しています。キーを押すたびに、正しいウィンドウ/フォームが表示されるかどうかを確認する必要があります。だから私がしていることは、表示されているウィンドウのポインタを取得し、そのウィンドウタイトルを取得することです。ただし、すべてのウィンドウ/フォームにウィンドウタイトルが表示されるわけではありません。代わりにクラスの名前を取得する方が良いと思います。クラスの名前を取得するにはどうすればよいですか?

QWidget *pWin = QApplication::activeWindow();

私が試したとき:

pWin->className(); 

クラスの名前を取得するために、私は得ています:

「エラー:クラスQWidgetには 'className'という名前のメンバーがありません」

誰かが正しい方法を教えてくれますか?

27
Owen

metaobject を使用してみてください。

pWin->metaObject()->className();  
51
J-16 SDiZ

Typeinfoヘッダーを確認することもできます。オブジェクトでtypeid演算子を使用すると、オブジェクトのタイプを説明するtype_infoインスタンスが取得されます。チェックアウト: http://www.cplusplus.com/reference/std/typeinfo/type_info/

0