Подтвердить что ты не робот

Показать QImage с QtGui

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

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

4b9b3361

Ответ 1

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

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

В главном окне графического интерфейса создайте графический интерфейс перетаскивания и создайте ярлык (например, "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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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