Отображение QImage с помощью QtGui



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



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

1458   5  

5 ответов:

Простой, но полный пример, показывающий, как отобразить 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();
}

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

QGraphicsScene *scene;
QPixmap image;

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

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

Один из распространенных способов-добавить изображение в виджет 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();
}

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

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

В главном окне GUI создайте с помощью drag drop 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);
}

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

Comments

    Ничего не найдено.