Вопрос

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

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

Это было полезно?

Решение 4

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

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

В главном окне графического интерфейса создать GUI с использованием графического интерфейса Drag Drop и создать метку (например, "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);
}

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top