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

error C2664: 'App *const' to 'QWidget *'

本文关键字:const QWidget App 错误 C2664      更新时间:2023-10-16

我想把一个动画放到我的程序中。

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

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是一个自定义类

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

Qt的每个UI元素都可以在构造时接受一个参数,这是QWidget,它将充当父元素。这个父进程将负责处理其子进程的删除。您应该在Qt文档(特别是QWidget constructor的文档)中阅读更多关于此的信息。

在您的示例中,不应该将this传递给QLabel构造函数。您必须传递另一个将成为此QLabel父组件的小部件。

编译器用您得到的消息清楚地显示了这个问题。它等待QWidget,但得到了你的类(它在任何时候都不继承QWidget)。