错误C2664:'App * const'到'QWidget *'

时间:2014-07-17 14:05:45

标签: c++ qt cinder

我正在尝试将动画gif放入我的程序中。

但是,当我遵循正确的语法时

QMovie *hit1=new QMovie("BadExplosion.gif");
QLabel *processLabel=new QLabel(this);
processLabel->setMovie(hit1);
hit1->start();

中的

void TestApp::draw()
{
//this code and other drawing code here
}

我遇到了错误

错误C2664:'QLabel :: QLabel(QWidget *,Qt :: WindowFlags)':无法将参数1从'TestApp * const'转换为'QWidget *'

QLabel *processLabel=new QLabel(this);

有什么想法吗?谢谢!

编辑:TestApp是一个自定义类。

1 个答案:

答案 0 :(得分:1)

如果TestApp是自定义类,那么此代码无法正常工作,这是完全正常的。

Qt的每个UI元素都可以在构造时使用参数,即QWidget作为父级。该父母将特别负责处理其子女删除。您应该在Qt文档(尤其是QWidget constructor的文档)中阅读更多相关内容。

在您的情况下,您不应该将this传递给QLabel构造函数。您必须传递另一个小部件,该小部件将成为此QLabel个父级。

编译器会清楚地显示您收到的消息。它会等待QWidget,但会改为上课(在任何时候都不会继承QWidget)。