为什么我的QPainter实例仅在我使用特定的.png时绘制?

时间:2012-10-10 08:31:55

标签: qt qpainter qimage

我正在用Qt Creator创建一个简单的“蛙人”型游戏。 我设法得到一个可以使用4个方向键的玩家,以及一个可以在屏幕上自行移动的汽车。我有单独的Player,Car和Frogger课程。

Frogger类在 paintEvent 中绘制图像:

painter.drawImage(player->getRect(), player->getImage());
painter.drawImage(car->getRect(), car->getImage());

但是我在尝试为汽车加载不同的图像时遇到了问题。如果我对汽车和玩家构造者使用image.load("player.png");,我可以看到汽车在屏幕上作为玩家图像移动,并且玩家根据我的按键移动。

但是,如果我用其他任何东西替换图像(所有图像都在同一个文件夹中;我也尝试将其添加到“其他文件”下的Qt Creator中),例如“car.png”,它似乎没有显示起来。我尝试了其他图像,但那些也没有出现在玩家身上。有关为何会发生这种情况的任何想法我评论了我的autoMove()函数并没有任何变化,所以我认为这与我如何实现我的行动无关。关于我可能遗失的任何想法?

1 个答案:

答案 0 :(得分:0)

我猜你可以在加载图像时减少可能的错误位置。尝试通过检查QImage::load

的返回值来确认这一点
QString path = "player.png";
bool loadSuccess = image.load(path);
qDebug() << "Image" << path << "loaded? =>" << loadSuccess;

如果这将打印为false,请检查Qt在转到QFile时是否能找到完全相同的路径:

if(!loadSuccess)
    qDebug() << "  File exists? =>" << QFile::exists(path);

如果打印为true,则Qt无法读取图像格式。可能您使用的是非标准PNG编码。这些图像都来自同一个来源吗? (例如,由相同的图像编辑器编辑)

但是,即使上面的第一个调试输出始终显示为true,如果仍然出现错误,则错误在其他位置。然后,它可以帮助我们提供更多关于如何使用图像的代码。