qobject_cast返回null

时间:2017-05-15 11:44:45

标签: qt visual-c++ qobject

我正在尝试从QObject *转换为自定义类类型,但是应该接收此转换的指针始终为NULL。

相关的代码行:

这是演员

的功能
void CFCInterface::fnAddConn()
{

CFCConnections* f_pConn ;
f_pConn= new CFCConnections(this);


QObject* f_pObject = this;

while(f_pObject)
{
    f_pConn = qobject_cast<CFCConnections*>(f_pObject);
    if(f_pConn)
    break;  

    f_pObject = f_pObject->parent();

}
if( f_pConn == 0 ) 
return;

}

这在FCInterface的主构造函数中调用:

`CFCInterface::CFCInterface(QObject* parent): CInterface(parent), CFCAbstract() 
{
    //Some other functions being called
    fnAddConn();

}

CFCInterface::~CFCInterface()
{

}
`

f_pConn保持为NULL。如果有人可以猜测为什么会这样,我会有一些领导跟随。

作为参考,我将添加类和头文件。除了使这个演员工作之外,他们没有任何功能。

部首:

#include headers

class CFCConnections: public CResourceItem
{

    Q_OBJECT

public:
    CFCConnections(QObject*);
    ~CFCConnections();



};


#endif

类别:

#include headers

CFCConnections::CFCConnections(QObject* parent) : CResourceItem(parent)
{

    //Empty contructor


}
CFCConnections::~CFCConnections()
{

}

PS:我不认为代码试图做的是相关的,但是如果有人想知道FCInterface是FCConnections的父类。我正在尝试实现一个树模型列表,其中每个项目都有自己的类和功能。我正在使用强制转换使“连接”出现在FCInterface下。

2 个答案:

答案 0 :(得分:0)

这非常简单:执行此操作的对象不是CFConnections的后代。

您需要能够用手指指向QObject构造函数调用和/或setParent调用,以便建立这种父子关系。

您的代码示例不完整,并且您有许多不相关的详细信息。提供显示问题的单个文件示例。

答案 1 :(得分:0)

可能的解决方案:

原来错误在第一行。我写了CFCConnections* f_pConn = 0认为这会为我做适当的内存分配。 将其更改为以下内容可解决问题:

CFCConnections* f_pConn;
f_pConn = new CFCConnections(this);