Отображать Qimage с qtgui
Вопрос
Я новичок в 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
.