Qt jpg图像显示

时间:2009-08-31 15:17:22

标签: image qt graphics video view

我想在Qt UI中显示.jpg图像。我在网上查了一下,发现http://qt-project.org/doc/qt-4.8/widgets-imageviewer.html。我认为Graphics View也会这样做,而且它还有编解码器来显示视频。如何使用Graphics View显示图像?我经历了图书馆,但因为我是Qt的全新人,所以我找不到开头的线索。你能指导一下如何在Qt中加载和显示图像的资源/例子吗?

感谢。

7 个答案:

答案 0 :(得分:41)

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

...

QPixmap image("blah.jpg");

QLabel imageLabel = new QLabel();
imageLabel.setPixmap(image);

mainLayout.addWidget(imageLabel);

...

道歉,这是使用Jambi(Qt for Java)所以语法不同,但理论是一样的。

答案 1 :(得分:39)

#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();
}

这应该有效。 :)支持的格式列表可以是found here

答案 2 :(得分:12)

如果您想要做的唯一事情是将图像放入窗口小部件而不需要图形API的复杂性,您还可以创建一个新的QWidget并使用StyleSheets设置背景。像这样:

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));
    ...
}

答案 3 :(得分:4)

  

我想在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();
}

答案 4 :(得分:3)

  1. 将Label(QLabel)添加到要显示图像的对话框中。这个QLabel实际上会显示图像。将其大小调整为您希望图像显示的大小。

  2. 将图片添加到项目中的资源中。

  3. 现在进入QLabel属性并选择您为 pixmap 属性添加到资源的图像。请务必检查下一个属性 scaledContents ,以缩小您想要查看的尺寸的图片。

  4. 总而言之,图像现在会显示出来。

答案 5 :(得分:2)

我理解你的沮丧“图形视图小部件”不是最好的方法,是的,它可以完成,但它几乎与使用标签(你想要的任何方式)完全一样现在所有的方式列出的确有效......但

对于你和其他任何可能遇到这个问题的人来说,他最简单的方法就是这样做(你有什么问题)就是这样。

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

}

答案 6 :(得分:1)

使用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();
}