Что не так с этим вызовом функции - PullRequest
1 голос
/ 18 января 2011

Вот код:

QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_Indexed8);
ui->viewLabel->setPixmap(QPixmap::fromImage(qi,Qt::AutoColor));

Почему это дает мне ошибку? Что пытается заставить меня изменить аргумент ци в вызове fromImage? Я относительно новичок в C ++, и кажется, что я настраиваю это правильно. Это работает, если я изменю строку на

QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_Indexed8);
    ui->viewLabel->setPixmap(QPixmap::fromImage(qi[0],Qt::AutoColor));

Но правильно ли это сделать?

Ответы [ 4 ]

3 голосов
/ 18 января 2011

Это потому, что QPixmap :: fromImage ожидает ссылку на изображение, а не указатель на него.

Однако, измените ваш qi [0] на * qi, что делает намерениеочиститель.(или просто воздержитесь от использования указателя и начните с QImage qi(fullCharArray ...).

2 голосов
/ 18 января 2011

Обычно это может помочь, если вы укажете сообщение об ошибке в своем вопросе.Теперь, глядя на онлайн-документацию qts, я думаю, что ваша проблема заключается в следующем:

вы пытаетесь передать qi типа QImage* в QPixMap :: fromImage , который ожидает1006 *, так что ссылка на QImage.Поэтому вам нужно разыменовать qi:

ui->viewLabel->setPixmap(QPixmap::fromImage(*qi,Qt::AutoColor));

Это в основном идентично вашей второй версии ui->viewLabel->setPixmap(QPixmap::fromImage(qi[0],Qt::AutoColor));, поскольку ptr[i] определяется как *(ptr+i), поэтому ptr[0] означает в основном*(ptr+0), что *ptr.Однако использование * для разыменования здесь делает более понятным, что вы разыменовываете указатель на один объект вместо массива.

0 голосов
/ 18 января 2011

qi - указатель, а setPixmap выглядит как ожидание объекта, поэтому первая версия дает сбой.

Правильный путь -

QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_Indexed8);
ui->viewLabel->setPixmap(QPixmap::fromImage(*qi,Qt::AutoColor));
0 голосов
/ 18 января 2011

Похоже, QPixmap::fromImage принимает QImage в качестве первого аргумента, а не pointer to a QImage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...