5

我创建了一个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() );
}

我确保图像目录存在于运行应用程序的工作目录中。如果它是相关的,我的 QRC 文件是这样的:

<RCC>
<qresource prefix="/images">
<file>images/target.png</file>
</qresource>
</RCC>

几天来我一直在尝试处理这个问题——任何关于为什么图像没有出现的想法都会很可爱。(这是否与我在构造函数中设置像素图有关QLabel?)

4

1 回答 1

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可以提供详细错误消息的方法。

于 2011-01-02T22:56:04.340 回答