如何将图像加载到painter.drawimage函数
how to load image to painter.drawimage function
我已将图像存储在板本地目录(/home/images/system/image.png)中
对于painter.drawimage函数,传递Qpoint和Qimage作为参数。
painter.drawImage(QRect(100, 50, 100, 100), QImage("home/images/system/image.png"));
我可以在这里直接使用图像的路径吗??如果我像这样加载,它就不起作用这是传递存储在板目录中的图像路径的正确方式吗?
您可以看到位置和您试图加载的路径之间的不一致:
我已将图像存储在板本地目录(/home/images/system/image.png)中
然后:
painter.drawImage(QRect(100, 50, 100, 100), QImage("home/images/system/image.png"))
您缺少绝对路径的前导斜杠。为什么你的程序目前不起作用,是因为程序正在寻找相对于应用程序的图像,而不是绝对路径。
解决方案是对上述线路进行小的修复,如下所示:
painter.drawImage(QRect(100, 50, 100, 100), QImage("/home/images/system/image.png"))
^
然而,这只是一个快速的解决方法。在理想的情况下,您不会真正加载这样的图像,尤其是不会从与运行应用程序的用户不同的主文件夹加载图像。
如果您使用相同用户的主目录,则不会使用硬编码路径,而是使用QStandardPaths中的以下选项:
QStandardPaths::HomeLocation 8 Returns the user's home directory.
除非真的有必要,否则硬编码一条长的绝对路径是一种非常糟糕的做法,但这是罕见的。
或者,您也可以将图像放在应用程序旁边,并以以下方式加载:
painter.drawImage(QRect(100, 50, 100, 100),
QImage(QString("%1/image.png")
.arg(QCoreApplication::applicationDirPath()));
根据此方法的QCoreApplication文档。
我可能会坚持使用最新的选项,或者至少使用前面提到的没有硬编码的主路径。
当然,您也可以始终使用Qt资源系统,但我认为在这种简单的情况下,这会有点过分,除非您想将映像捆绑在一起,这样您就不需要单独部署它。在这种情况下,你会写这样的东西:
painter.drawImage(QRect(100, 50, 100, 100), QImage(":/image.png"));
您将在.proqmake文件中拥有如下资源文件:
RESOURCES += myresourcefile.qrc
资源文件将包含如下内容:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>image.png</file>
</qresource>
</RCC>
- 缺少前斜杠
- 在绘制事件中加载图像是一种糟糕的方法
- 试试这个:
。
QImage img("/home/images/system/image.png");
Q_ASSERT(!img.isNull());
painter.drawImage(QRect(100, 50, 100, 100), img);
而不是
painter.drawImage(QRect(100, 50, 100, 100), QImage("/home/images/system/charge1.png"));
你可以使用
QImage image("home/images/system/charge1.png");
painter.drawImage(rect, image);
在文档中,您可以看到
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(":/images/myImage.png");
QPainter painter(this);
painter.drawImage(target, image, source);
在链接中:http://qt-project.org/doc/qt-4.8/qpainter.html#drawImage-5
此外,我建议您使用Qt:中的资源文件
- http://qt-project.org/doc/qt-5.0/qtcore/resources.html
- http://qt-project.org/doc/qt-4.8/designer-resources.html