Отображение QImage с помощью QtGui
Я новичок в Qt, и я пытаюсь создать простое графическое приложение, которое отображает изображение после нажатия кнопки.
Я могу прочитать изображение в объекте QImage, но есть ли простой способ вызвать функцию Qt, которая принимает QImage в качестве входных данных и отображает его?
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