ошибка C2664: «Приложение * const» в «QWidget *»

Я пытаюсь поместить анимированный 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 - это настраиваемый класс.


person Chromelon    schedule 17.07.2014    source источник
comment
Что такое TestApp? Пользовательский класс? Или это происходит от чего-то другого?   -  person JBL    schedule 17.07.2014
comment
Отредактировано, чтобы сказать, что такое TestApp.   -  person Chromelon    schedule 17.07.2014


Ответы (1)


Если TestApp является пользовательским классом, то совершенно нормально, что этот код не работает.

Каждый элемент пользовательского интерфейса Qt может принимать параметр при построении, который является QWidget, который будет действовать как родитель. Этот родитель, в частности, будет нести ответственность за удаление своих дочерних элементов. Вы должны прочитать больше об этом в документации Qt (особенно документ для QWidget constructor ).

В вашем случае вы не должны передавать this конструктору QLabel. Вы должны передать другой виджет, который станет этим QLabel родителем.

Компилятор ясно показывает эту проблему с сообщением, которое вы получили. Он ждет QWidget, но вместо этого получает ваш класс (который ни в коем случае не наследует QWidget).

person JBL    schedule 17.07.2014