ошибка C2664: «App * 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 это пользовательский класс.

1

Решение

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

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

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

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

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector