1

I'm trying to put an animated gif into my program.

However, when I follow the proper syntax

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

in the

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

I run into the error

error C2664: 'QLabel::QLabel(QWidget *, Qt::WindowFlags)' : Cannot convert parameter 1 from 'TestApp *const' to 'QWidget *' on the line

QLabel *processLabel=new QLabel(this);

Any ideas? Thanks!

EDIT: TestApp is a custom class.

4

1 回答 1

1

如果TestApp是自定义类,那么这段代码不起作用是完全正常的。

Qt 的每个 UI 元素都可以在构造时采用一个参数,该参数QWidget将充当父级。该父级将特别负责处理其子级删除。您应该在 Qt 文档(尤其是 文档QWidget constructor)中阅读更多相关信息。

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

编译器通过您收到的消息清楚地显示了这个问题。它等待 a ,但取而代之的是你的类(它在任何时候QWidget都不会继承)。QWidget

于 2014-07-17T15:52:51.847 回答