Показать QImage с QtGui - PullRequest
       33

Показать QImage с QtGui

39 голосов
/ 17 декабря 2010

Я новичок в Qt и пытаюсь создать простое приложение с графическим интерфейсом, которое отображает изображение после нажатия кнопки.

Я могу прочитать изображение в объекте QImage, ноЕсть ли простой способ вызвать функцию Qt, которая принимает QImage в качестве ввода и отображает его?

Ответы [ 5 ]

67 голосов
/ 17 декабря 2010

Простой, но полный пример, показывающий, как отобразить QImage, может выглядеть так:

#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();
}
23 голосов
/ 02 августа 2013

Рисование изображения с использованием QLabel кажется для меня чем-то вроде клочья.В более новых версиях Qt вы можете использовать виджет QGraphicsView.В Qt Creator перетащите виджет Graphics View на свой пользовательский интерфейс и назовите его как-нибудь (в коде ниже он называется mainImage).В mainwindow.h добавьте что-то вроде следующего в качестве private переменных в ваш MainWindow класс:

QGraphicsScene *scene;
QPixmap image;

Затем просто отредактируйте mainwindow.cpp и сделайте конструктор примерно таким:*

11 голосов
/ 17 декабря 2010

Один из распространенных способов - добавить изображение в виджет QLabel, используя QLabel::setPixmap(), а затем отобразить QLabel, как и любой другой виджет. Пример:

#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();
}
6 голосов
/ 17 декабря 2010

Спасибо всем, я нашел, как это сделать, так же, как Дейв и Сергей:

Я использую QT Creator:

В главном окне графического интерфейса пользователя создайте с помощью перетаскиванияGUI и создание метки (например, «myLabel»)

При обратном вызове кнопки (нажатой) сделайте следующее, используя указатель (* ui) на окно интерфейса пользователя:

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);
}
2 голосов
/ 17 декабря 2010

Насколько я знаю, QPixmap используется для отображения изображений и QImage для их чтения. Есть QPixmap::convertFromImage() и QPixmap::fromImage() функции для преобразования из QImage.

...