Domanda

Sono nuovo di Qt, e sto cercando di creare una semplice interfaccia grafica un'applicazione che visualizza un'immagine una volta un pulsante è stato cliccato.

I può leggere l'immagine in un oggetto QImage, ma esiste un modo semplice per chiamare una funzione Qt che prende il QImage come input, e di visualizzarlo?

È stato utile?

Soluzione 4

Grazie a tutti, ho trovato come farlo, che è lo stesso di Dave e Sergey:

Sto usando Qt Creator:

Nella finestra principale della GUI creare utilizzando la GUI drag drop e creare etichetta (ad esempio "myLabel")

Nel callback del pulsante (cliccato) effettuare le seguenti operazioni utilizzando il puntatore (* ui) per la finestra di interfaccia utente:

void MainWindow::on_pushButton_clicked()
{
     QImage imageObject;
     imageObject.load(imagePath);
     ui->myLabel->setPixmap(QPixmap::fromImage(imageObject));

     //OR use the other way by setting the Pixmap directly

     QPixmap pixmapObject(imagePath");
     ui->myLabel2->setPixmap(pixmapObject);
}

Altri suggerimenti

Semplice, ma esempio completo che mostra come visualizzare QImage potrebbe essere simile a questo:

#include <QtGui/QApplication>
#include <QLabel>

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

    QImage myImage;
    myImage.load("test.png");

    QLabel myLabel;
    myLabel.setPixmap(QPixmap::fromImage(myImage));

    myLabel.show();

    return a.exec();
}

Disegnare un'immagine utilizzando un QLabel sembra un po 'un kludge per me. Con le nuove versioni di Qt è possibile utilizzare un widget QGraphicsView. In Qt Creator, trascinare un widget sul vostro Graphics View interfaccia utente e il nome qualcosa (prende il nome mainImage nel seguente codice). In mainwindow.h, aggiungere qualcosa come il seguente come variabili private alla classe MainWindow:

QGraphicsScene *scene;
QPixmap image;

Poi basta modificare mainwindow.cpp e rendere il costruttore qualcosa di simile:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    image.load("myimage.png");
    scene = new QGraphicsScene(this);
    scene->addPixmap(image);
    scene->setSceneRect(image.rect());

    ui->mainImage->setScene(scene);
}

Un modo comune è quello di aggiungere l'immagine di un widget di QLabel utilizzando QLabel::setPixmap(), e quindi visualizzare il QLabel come si farebbe con qualsiasi altro widget. Esempio:

#include <QtGui>

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QPixmap pm("your-image.jpg");
  QLabel lbl;
  lbl.setPixmap(pm);
  lbl.show();
  return app.exec();
}

Per quanto ne so, QPixmap viene utilizzato per la visualizzazione di immagini e QImage per la loro lettura. Ci sono QPixmap::convertFromImage() e QPixmap::fromImage() funzioni per convertire da QImage.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top