我已经创建了一个QLabel
的子类,我打算在QGraphicsView
中使用它。它可以作为一个可移动的“点”,人们可以点击并拖动图形视图。
创建自定义类并将其显示在图形视图中不是问题;然而,尝试让自定义QLabel
用自己想要的图像绘制自己并不会发生。我的自定义QLabel
类的构造函数是这样的:
TrackerPoint::TrackerPoint(QWidget *parent) :
QLabel(parent)
{
this->setFixedSize( 40, 40 );
QPixmap pixmap( ":/images/target.png" );
this->setPixmap( pixmap );
this->setMask( pixmap.mask() );
}
我确保images目录存在于运行应用程序的工作目录中。如果它完全相关,我的QRC文件是这样的:
<RCC>
<qresource prefix="/images">
<file>images/target.png</file>
</qresource>
</RCC>
我一直试图解决这个问题好几天 - 任何关于为什么图像没有出现的想法都会很可爱。 (这与我在QLabel
的构造函数中设置像素图的事实有关吗?)
答案 0 :(得分:6)
你有:
<qresource prefix="/images">
<file>images/target.png</file>
</qresource>
我认为这会在资源路径中产生双images
,即:/images/images/target.png
。要解决此问题,请移除prefix="/images"
或将alias="target.png"
放入file
标记。
为了更清楚地说明错误的位置,您可以编写代码以便它使用QPixmap::load
,因为可以检查错误:
QPixmap pixmap;
if (!pixmap.load( ":/images/target.png" )) {
qWarning("Failed to load images/target.png");
}
this->setPixmap( pixmap );
或者您可以更进一步使用QImageReader
,它可以提供详细的错误消息。