2009-08-31 16 views
50

Voglio visualizzare l'immagine .jpg in un'interfaccia utente Qt. L'ho controllato online e ho trovato http://qt-project.org/doc/qt-4.8/widgets-imageviewer.html. Pensavo che Graphics View avrebbe fatto lo stesso, e che ha anche il codec per visualizzare i video. Come visualizzare le immagini usando la Vista Grafica? Ho esaminato le librerie, ma poiché sono totalmente newbie in Qt, non riesco a trovare un indizio per iniziare. Puoi indirizzarmi ad alcune risorse/esempi su come caricare e visualizzare le immagini in Qt?Visualizzazione immagine jpg Qt

Grazie.

risposta

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

Questo dovrebbe funzionare. :) Elenco dei formati supportati può essere found here

+27

come possiamo usare questo con interfaccia utente creata in Qt Creator? – DucDigital

+4

Si prega di notare che per Qt 4.6 questo codice ha un errore. Prova questo: int main (int argc, char * argv []) { QString fileName ("C: /aaa..gif"); QApplicazione a (argc, argv); QGraphicsScene scene; scene.addPixmap (QPixmap (fileName)); QGraphicsView view (& scene); view.show(); return a.exec(); } – Narek

+1

Il codice di questo post ha funzionato perfettamente con Qt 4.7.0 – karlphillip

11

Se l'unica cosa che vuoi fare è inserire un'immagine su un widget senza la complessità dell'API grafica, puoi anche creare un nuovo QWidget e impostare lo sfondo con StyleSheets. Qualcosa di simile a questo:

 
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

Questo ha funzionato per me. Grazie. – Kamal

37

Si potrebbe allegare l'immagine (come una pixmap) a un'etichetta poi aggiungere che, per il layout ...

... 

QPixmap image("blah.jpg"); 

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

mainLayout.addWidget(imageLabel); 

... 

Scuse, questo sta usando Jambi (Qt per Java) quindi la sintassi è diversa, ma la teoria è la stessa.

4

voglio visualizzare un'immagine .jpg in un Qt utente

Il modo più semplice è quello di utilizzare QLabel per questo:

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

Capisco la tua frustrazione dei "Vista Grafica widget" non è il modo migliore per farlo, sì si può fare, ma è quasi esattamente come usare un'etichetta (per quello che vuoi in qualsiasi modo) ora tutti i modi elencati funzionano ma ...

Per te e per chiunque altro che può imbattersi in questa domanda il modo più semplice per farlo (quello che stai chiedendo in qualsiasi modo) è questo.

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

}

+0

Questo non è completo, può essere molto confuso per qualcuno che non sa giocare con le immagini. – valkon

0
  1. Aggiungi etichetta (un QLabel) alla finestra di dialogo in cui si desidera visualizzare l'immagine. Questa QLabel visualizzerà effettivamente l'immagine. Ridimensiona alla dimensione desiderata per l'immagine.

  2. Aggiungi l'immagine alle tue risorse nel progetto.

  3. Ora vai in proprietà QLabel e seleziona l'immagine aggiunta alle risorse per pixmap proprietà. Assicurati di controllare la proprietà successiva ridimensionata dei contenuti per ridurre l'immagine nella dimensione che desideri vedere.

Questo è tutto, l'immagine ora verrà visualizzata.

0

Utilizzando QPainter e QImage di dipingere su una finestra-widget di (QMainWindow) (solo un altro metodo)

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