QT:获取对象的类名
Posted
技术标签:
【中文标题】QT:获取对象的类名【英文标题】:QT : get the class name of an object 【发布时间】:2011-05-13 14:54:45 【问题描述】:我正在编写一个模拟另一个应用程序按键的测试应用程序。对于每次按键,我都必须检查是否显示了正确的窗口/表单。所以我要做的是获取正在显示的窗口的指针并获取它的窗口标题。但是,并非所有窗口/窗体都显示窗口标题。所以我认为最好改为获取班级的名称。我怎样才能得到班级的名字?
QWidget *pWin = QApplication::activeWindow();
当我尝试时:
pWin->className();
要获取班级的名称,我得到:
“错误:类 QWidget 没有名为‘className’的成员”
有人可以告诉我正确的方法吗?
【问题讨论】:
【参考方案1】:尝试使用metaobject。
pWin->metaObject()->className();
【讨论】:
当我尝试这个时,我得到了类名 QObject,它是继承的类名而不是派生类的名称。有关如何获取派生类名称的任何 cmets? @DeanP 您需要将 Q_OBJECT 宏添加到您的派生类中,以便 Qt 知道派生类的名称。【参考方案2】:您还可以检查 typeinfo 标头。在你的对象上使用 typeid 运算符,你会得到一个 type_info 实例,它描述了你的对象的类型。 签出:http://www.cplusplus.com/reference/std/typeinfo/type_info/
【讨论】:
以上是关于QT:获取对象的类名的主要内容,如果未能解决你的问题,请参考以下文章