Qt资源不起作用

时间:2016-05-07 21:13:39

标签: c++ qt

我已经看过每个SE问题,甚至还有一些视频教程。我不知道为什么它不起作用。

我有两张QLabel,lblBuyerlblSeller以及两张图片。以下是相关代码:

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

这就是资源的样子:

enter image description here

如果你需要,还有resources.qrc:

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

文件结构(图像直接在Images目录中): enter image description here

我选择&#34;复制为资源路径&#34;所以我肯定不会弄乱任何东西。此外,当我点击&#34;删除丢失的文件时,&#34;既没有被删除......但是,当我运行它时:

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

1 个答案:

答案 0 :(得分:2)

我已经看过几次,治愈方法各不相同:

首先要尝试清理 / 重建您的项目。

要尝试的第二件事是手动清除 / 重建您的项目(就像在文件管理器中手动删除您的构建目录一样)。

如果问题仍然存在,您可以尝试将资源初始化宏放入主

换句话说,在为项目中的每个资源实例化应用之后,在Q_INIT_RESOURCE(my_resource);函数中放置一行代码:main(),如下所示:

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

当然,您将实际资源文件的名称替换为my_resource

这通常只在我做一些奇怪的事情时才有用,例如使用我自己的静态Qt或使用有线项目结构。