2016-05-07 14 views
0

私はすべてのSE質問を見てきましたし、ビデオチュートリアルに従っています。なぜそれが動作していないのか分かりません。Qtリソースが動作しない

私は2つのQラベル、lblBuyerlblSellerと2つの画像を持っています。ここでは、関連するコードは次のとおりです。あなたがそれをしたい場合は

enter image description here

そしてresources.qrc:

QPixmap pixmap_buyer(":/Resources/Images/Buyer.png"), pixmap_seller(":/Resources/Images/Seller.png"); 

size_t lblBuyerWidth = ui->lblBuyer->width(), lblBuyerHeight = ui->lblBuyer->height(); 
size_t lblSellerWidth = ui->lblSeller->width(), lblSellerHeight = ui->lblSeller->height(); 

ui->lblBuyer->setPixmap(
    pixmap_buyer.scaled(lblBuyerWidth, lblBuyerHeight, Qt::KeepAspectRatio) 
); 

ui->lblSeller->setPixmap(
    pixmap_seller.scaled(lblSellerWidth, lblSellerHeight, Qt::KeepAspectRatio) 
); 

これは、リソースがどのように見えるかです

<RCC> 
    <qresource prefix="/Resources"> 
     <file>Images/Buyer.png</file> 
     <file>Images/Seller.png</file> 
    </qresource> 
</RCC> 

およびファイル構造(画像は直接Imagesディレクトリにあります): enter image description here

私は「リソースパスとしてコピー」を選択したので、何かを混乱させないようにしました。私がクリックしたときにも、「ファイルが見つからないと削除」どちらもない私はそれを実行すると、しかし...削除される:

QPixmap::scaled: Pixmap is a null pixmap 
QPixmap::scaled: Pixmap is a null pixmap 
+0

'pixmap_buyer.isNull()'は何を返しますか?代わりに 'QFile'を使ってリソース内のファイルをオープンしようとすると(ファイルが実際にリソースシステムにあるかどうかをチェックするために) – peppe

+0

trueを返します。私は 'if(... isNull())qDebug(" Is null ");を実行し、それは印刷します。 – Goodies

答えて

2

私は数回これを見ていると、治療法は異なります。

最初に試してみるのはクリーン/rebuildあなたのプロジェクトです。

しようとする2つ目は(などのファイルマネージャで手動でビルドディレクトリを削除)プロジェクトを再ビルド手動でクリーン/にあります。

問題が解決しない場合は、リソースの初期化マクロをメインに入れてみてください。言い換えれば

、のような行を置く:ちょうどあなたのプロジェクトにリソースごとにアプリをインスタンス化した後、あなたのmain()機能でQ_INIT_RESOURCE(my_resource);、次のように:もちろん

int main(int argc, char *argv[]){ 
    QApplication app(argc, argv); 
    Q_INIT_RESOURCE(my_resource); 
    // ... whatever here ... 
    return app.exec();} 
} 

あなたが実際のリソースの名前を入れてmy_resourceの代わりにファイル。

これは通常、私自身の静的なQtを使用するか、有線のプロジェクト構造を使用するような奇妙なことをしているときにのみ必要です。

+0

'Q_INIT_RESOURCE'定義は機能しませんが、ビルドディレクトリをクリアしてビルドを再構築しました。ありがとう。どうやら、makefileのコンパイル文字列に '-name'を追加するはずですか? – Goodies

+0

@Goodies:私は私の答えを再構築しました。 –

関連する問題