Qt jpg图片显示

60
我想在Qt UI中显示 .jpg 图像。我在网上查看并找到了https://doc.qt.io/archives/qt-4.8/qt-widgets-imageviewer-example.html。 我认为Graphics View可以做同样的事情,而且它还有编解码器以显示视频。如何使用Graphics View显示图像?我查阅了库,但由于我是Qt的完全新手,所以找不到开始的线索。您能向我介绍一些关于如何在Qt中加载和显示图像的资源/示例吗?
谢谢。
7个回答

57

你可以将图像(作为pixmap)附加到标签上,然后将其添加到您的布局中...

...

QPixmap image("blah.jpg");

QLabel *imageLabel = new QLabel();
imageLabel->setPixmap(image);

mainLayout.addWidget(imageLabel);

...

抱歉,这里使用的是Jambi(Java的Qt),因此语法不同,但理论是相同的。


45
#include ...

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGraphicsScene scene;
    QGraphicsView view(&scene);
    QGraphicsPixmapItem item(QPixmap("c:\\test.png"));
    scene.addItem(&item);
    view.show();
    return a.exec();
}

这应该可以正常工作。 :) 支持的格式列表可以在这里找到


33
我们如何在使用QT Creator创建的用户界面中使用这个? - DucDigital
4
请注意,对于Qt 4.6版本,此代码存在一个错误。 请尝试使用以下代码:int main(int argc, char *argv[]) { QString fileName("C:/aaa..gif"); QApplication a(argc, argv); QGraphicsScene scene; scene.addPixmap(QPixmap(fileName)); QGraphicsView view(&scene); view.show(); return a.exec(); } - Narek
1
你如何将GraphicsView添加到布局对象中? - Animal Rights
3
在Creator中使用,将图像添加到资源文件中。创建QLabel(默认为文本),然后选择Pixmap属性。这将允许您选择要显示的图片。 - Walter Nissen
2
这种解决方案与使用QLabel相比是否有任何优势,例如性能或其他方面? - ArchLinuxTux

14

如果您只想将图像放置在小部件上,而不需要使用图形API的复杂性,您也可以创建一个新的QWidget并使用样式表设置背景。像这样:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    ...
    QWidget *pic = new QWidget(this);
    pic->setStyleSheet("background-image: url(test.png)");
    pic->setGeometry(QRect(50,50,128,128));
    ...
}

5
  1. 向要显示图像的对话框添加标签(QLabel)。这个QLabel将实际上显示图像。将其调整大小,以使图像呈现所需的大小。

  2. 在项目中将图像添加到您的资源中。

  3. 现在进入QLabel属性并选择您添加到资源中的图像用于pixmap属性。确保选中下一个属性scaledContents,以缩小图像到您想要看到的大小。

就这样,图像现在会显示出来。


4

我理解您的沮丧,“图形视图小部件”不是最好的方法来实现这一点,是的,它可以完成,但几乎与使用标签完全相同(对于您想要的任何方式)。现在列出的所有方法都有效,但...

对于您和其他可能遇到这个问题的人来说,最简单的方法(无论如何)是这样做。

QPixmap pix("Path\\path\\entername.jpeg");
    ui->label->setPixmap(pix);

}


这不完整,对于不知道如何处理图像的人来说可能非常令人困惑。 - Manolis Pap

3

使用 QPainterQImage 在窗口部件 (QMainWindow) 上绘制图像(另一种方法)

class MainWindow : public QMainWindow
{    
    public:
        MainWindow();
    protected:
        void paintEvent(QPaintEvent* event) override;

    protected:
        QImage image = QImage("/path/to/image.jpg");
};

// for convenience resize window to image size
MainWindow::MainWindow()
{
    setMinimumSize(image.size());
}

void MainWindow::paintEvent(QPaintEvent* event)
{
    QPainter painter(this);
    QRect rect = event->rect();
    painter.drawImage(rect, image, rect);
}


int main(int argc, char** argv)
{
    QApplication a(argc, argv);

    MainWindow mainWindow;
    mainWindow.show();
    return a.exec();
}

3
我希望在Qt UI中显示.jpg图片。
最简单的方法是使用QLabel:
int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QLabel label("<img src='image.jpg' />");
    label.show();
    return a.exec();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接