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() );
}

アプリケーションが実行される作業ディレクトリに images ディレクトリが存在することを確認しました。関連性がある場合、私の 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詳細なエラー メッセージを表示できる which を使用することもできます。

于 2011-01-02T22:56:04.340 に答える