2009-08-31 85 views
50

我想在Qt UI中显示.jpg图像。我在网上查过,发现http://qt-project.org/doc/qt-4.8/widgets-imageviewer.html。我认为Graphics View会做同样的事情,并且它也有编解码器来显示视频。如何使用图形视图显示图像?我浏览过图书馆,但是因为我在Qt中是一个全新手,我无法找到一个开始的线索。你能指导我介绍一些关于如何在Qt中加载和显示图像的资源/例子吗?Qt jpg图像显示

谢谢。

回答

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

+27

如何才能使用这个与Qt Creator中创建的UI? – DucDigital 2010-02-10 09:54:43

+4

请注意,对于Qt 4.6,此代码有错误。试试这个: int main(int argc,char * argv []) { QString fileName(“C:/aaa..gif”); Q应用程序a(argc,argv); QGraphicsScene scene; scene.addPixmap(QPixmap(fileName)); QGraphicsView view(&scene); view.show(); return a.exec(); } – Narek 2010-06-11 10:49:42

+1

这篇文章中的代码与Qt 4.7.0一起工作 – karlphillip 2011-09-29 14:23:38

11

如果您想要做的唯一事情就是将图像拖放到小部件中,而不需要图形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)); 
    ... 
} 
+0

这对我有效。谢谢。 – Kamal 2016-01-06 02:22:08

37

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

... 

QPixmap image("blah.jpg"); 

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

mainLayout.addWidget(imageLabel); 

... 

道歉,这是用占碑(QT为Java )所以语法不同,但理论是一样的。

4

我想在Qt的UI

的simpliest的方式来显示图像.JPG是,请使用QLabel此:

int main(int argc, char *argv[]) { 
    QApplication a(argc, argv); 
    QLabel label("<img src='image.jpg' />"); 
    label.show(); 
    return a.exec(); 
} 
2

我理解你的无奈 “图形视图部件”是不是要做到这一点的最好办法,是的,它是可以做到的,但它几乎完全一样,使用标签(你想要的任何方式)现在上市的所有方式做工作,但...

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

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

}

+0

这并不完整,对于不知道如何玩弄图像的人来说,这可能会让人很困惑。 – valkon 2014-07-22 00:40:00

0
  1. 添加标签(一个QLabel)到你要显示的图像的对话框。这个QLabel将实际显示图像。将其大小调整为想要图像显示的大小。

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

  3. 现在进入QLabel属性并选择您添加到资源的图像像素图属性。确保检查的下一个属性scaledContents萎缩在你想看到它的大小的图像。

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

0

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