我已经看过每个SE问题,甚至还有一些视频教程。我不知道为什么它不起作用。
我有两张QLabel,lblBuyer
和lblSeller
以及两张图片。以下是相关代码:
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)
);
这就是资源的样子:
如果你需要,还有resources.qrc:
<RCC>
<qresource prefix="/Resources">
<file>Images/Buyer.png</file>
<file>Images/Seller.png</file>
</qresource>
</RCC>
我选择&#34;复制为资源路径&#34;所以我肯定不会弄乱任何东西。此外,当我点击&#34;删除丢失的文件时,&#34;既没有被删除......但是,当我运行它时:
QPixmap::scaled: Pixmap is a null pixmap
QPixmap::scaled: Pixmap is a null pixmap
答案 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或使用有线项目结构。