2

很简单,我正在尝试在一个简单的 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 没有帮助

4

3 回答 3

1

尝试

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/

希望有帮助。

于 2013-04-30T22:49:54.367 回答
1
  1. 从某个 IDE(Qt Creator)运行它并检查日志。几乎可以肯定那里会显示一些错误消息。

  2. 确保已加载 jpg 插件。

  3. 确保其他内容不会更改标签的内容(例如 setText 将清除像素图)

于 2013-04-30T22:55:49.517 回答
1

您是否将图像( :/images/supremecourt.jpg )正确添加到资源文件中?如果你不是,看这个。你能发布你的资源文件的结构吗?

于 2013-05-01T00:53:23.650 回答