Qt Label :: setPixmap无效

时间:2013-04-30 22:13:49

标签: c++ qt

很简单,我正在尝试在简单的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无济于事

3 个答案:

答案 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)

  1. 从某个IDE(Qt Creator)运行它并检查日志。几乎可以肯定,那里会显示一些错误消息。

  2. 确保已加载jpg插件。

  3. 确保其他内容不会更改标签内容(例如setText会清除pixmap)

答案 2 :(得分:0)

您是否正确地将图片(:/ images/supremecourt.jpg)添加到resource file?如果不是,请观看this。你可以发布资源文件的结构吗?