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:获取对象的类名的主要内容,如果未能解决你的问题,请参考以下文章

如何从类名中找到 Qt 元对象实例?

jQuery 怎么获取类名

QT 信号和槽式如何实现的

封装一个通过类名获取对象的函数

在 KineticJS 中按类名从阶段获取多个对象

python从对象中获取类名