2009-08-31 17 views
50

Quiero mostrar la imagen .jpg en una interfaz de usuario de Qt. Lo revisé en línea y encontré http://qt-project.org/doc/qt-4.8/widgets-imageviewer.html. Creo que Graphics View hará lo mismo, y también tiene un códec para mostrar el video. ¿Cómo mostrar imágenes usando Graphics View? Revisé las bibliotecas, pero como soy totalmente novato en Qt, no puedo encontrar una pista para empezar. ¿Puede dirigirme a algunos recursos/ejemplos sobre cómo cargar y mostrar imágenes en Qt?Qt jpg image display

Gracias.

Respuesta

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

Esto debería funcionar. :) La lista de formatos admitidos puede ser found here

+27

¿Cómo podemos utilizar esto con la interfaz de usuario creada en Qt Creator? – DucDigital

+4

Tenga en cuenta que para Qt 4.6 este código tiene un error. Pruebe este: int main (int argc, char * argv []) { QString fileName ("C: /aaa..gif"); QApplication a (argc, argv); escena QGraphicsScene; scene.addPixmap (QPixmap (fileName)); QGraphicsVer vista (y escena); view.show(); devuelve a.exec(); } – Narek

+1

El código de esta publicación funcionó perfectamente con Qt 4.7.0 – karlphillip

11

Si lo único que desea hacer es colocar una imagen en un widget sin la complejidad de la API de gráficos, también puede simplemente crear un nuevo QWidget y establecer el fondo con StyleSheets. Algo como esto:

 
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

Esto funcionó para mí. Gracias. – Kamal

37

Se podría adjuntar la imagen (como un mapa de píxeles) a una etiqueta a continuación, añadir que a su disposición ...

... 

QPixmap image("blah.jpg"); 

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

mainLayout.addWidget(imageLabel); 

... 

Disculpas, esto es usar Jambi (Qt para Java) entonces la sintaxis es diferente, pero la teoría es la misma.

4

Quiero mostrar una imagen .jpg en una interfaz de usuario Qt

La forma más simple es utilizar QLabel para esto:

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

entiendo su frustración de los "Gráficos Controles de Vista" no es la mejor manera de hacer esto, sí se puede hacer, pero es casi exactamente lo mismo que usar una etiqueta (para lo que quieras) ahora todas las formas enumeradas funcionan, pero ...

Para usted y cualquier otra persona que se encuentre con esta pregunta, la forma más fácil de hacerlo (lo que está preguntando de cualquier forma) es esto.

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

}

+0

Esto no está completo, puede ser muy confuso para alguien que no sabe jugar con las imágenes. – valkon

0
  1. Agregar etiqueta (un QLabel) al cuadro de diálogo en la que desea mostrar la imagen. Esta QLabel realmente mostrará la imagen. Cambie el tamaño al tamaño que desea que aparezca la imagen.

  2. Agregue la imagen a sus recursos en su proyecto.

  3. Ahora entre en las propiedades QLabel y seleccione la imagen que ha agregado a los recursos para la propiedad pixmap. Asegúrese de comprobar la siguiente propiedad scaledContents para reducir la imagen en el tamaño que desea ver.

Eso es todo, la imagen ahora se mostrará.

0

Usando QPainter y QImage para pintar en una ventana en widgets (QMainWindow) (sólo otro método)

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