很简单,我正在尝试在简单的Qt GUI应用程序中显示图像。 我有这段代码:
ui->label_2->setVisible(true);
QPixmap supremect(":/images/supremecourt.jpg");
ui->label_2->setPixmap(supremect);
if(supremect.isNull())
{
QMessageBox err(this);
err.setText("File null");
err.exec();
}
building=SPCT; // A flag
ui->label_2->show();
它完美编译,但是当我运行它时,没有任何显示。我确信图像存在于资源中,所以我做错了什么?
编辑:转换为PNG无济于事
答案 0 :(得分:0)
尝试
QPixmap p;
QString str = ":/images/supremecourt.jpg";
bool retVal = p.load(str);
if(retVal == false)
{
qDebug() << "Failed to load image!";
foreach(const QByteArray &fmt, QImageReader::supportedImageFormats())
{
qDebug() << QString(fmt);
// if this doesn't list jpeg then you don't have
// the plugin in your imageformats folder.
}
if( !QFile::exists(str) )
{
qDebug() << "File" << str << "doesn't exist!";
}
}
http://qt-project.org/doc/qt-4.8/qpixmap.html#load
http://qt-project.org/doc/qt-4.8/qfile.html#exists
如果没有加载,那么您的程序可能无权访问正确的插件,或者文件不存在于您认为的位置。
jpeg插件的dll名为qjpeg4.dll,应该在./imageformats/
希望有所帮助。
答案 1 :(得分:0)
从某个IDE(Qt Creator)运行它并检查日志。几乎可以肯定,那里会显示一些错误消息。
确保已加载jpg插件。
确保其他内容不会更改标签内容(例如setText会清除pixmap)
答案 2 :(得分:0)
您是否正确地将图片(:/ images/supremecourt.jpg)添加到resource file?如果不是,请观看this。你可以发布资源文件的结构吗?