Qt jpg image display - PullRequest
       27

Qt jpg image display

51 голосов
/ 31 августа 2009

Я хочу отобразить изображение .jpg в пользовательском интерфейсе Qt. Я проверил это онлайн и нашел http://qt -project.org / doc / qt-4.8 / widgets-imageviewer.html . Я думал, что Graphics View сделает то же самое, а также имеет кодек для отображения видео. Как отображать изображения с помощью графического представления? Я просмотрел библиотеки, но, поскольку я совершенно новичок в Qt, я не могу найти подсказку для начала. Можете ли вы направить меня к некоторым ресурсам / примерам о том, как загружать и отображать изображения в Qt?

Спасибо.

Ответы [ 7 ]

42 голосов
/ 04 марта 2010

Вы можете прикрепить изображение (в виде растрового изображения) к метке, а затем добавить его в макет ...

...

QPixmap image("blah.jpg");

QLabel imageLabel = new QLabel();
imageLabel.setPixmap(image);

mainLayout.addWidget(imageLabel);

...

Извините, это использует Jambi (Qt для Java), поэтому синтаксис другой, но теория та же.

39 голосов
/ 01 сентября 2009
#include ...

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGraphicsScene scene;
    QGraphicsView view(&scene);
    QGraphicsPixmapItem item(QPixmap("c:\\test.png"));
    scene.addItem(&item);
    view.show();
    return a.exec();
}

Это должно работать. :) Список поддерживаемых форматов можно найти здесь

12 голосов
/ 15 января 2010

Если единственное, что вы хотите сделать, это вставить изображение в виджет без сложности графического API, вы также можете просто создать новый QWidget и установить фон с помощью StyleSheets. Примерно так:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    ...
    QWidget *pic = new QWidget(this);
    pic->setStyleSheet("background-image: url(test.png)");
    pic->setGeometry(QRect(50,50,128,128));
    ...
}
4 голосов
/ 31 августа 2010

Я хочу отобразить изображение .jpg в пользовательском интерфейсе Qt

Самый простой способ - использовать QLabel для этого:

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QLabel label("<img src='image.jpg' />");
    label.show();
    return a.exec();
}
3 голосов
/ 08 октября 2015
  1. Добавьте метку (QLabel) в диалоговое окно, в котором вы хотите показать изображение. Этот QLabel будет отображать изображение. Измените размер до размера, который вы хотите, чтобы изображение появилось.

  2. Добавьте изображение к своим ресурсам в вашем проекте.

  3. Теперь перейдите в свойства QLabel и выберите изображение, которое вы добавили в ресурсы для свойства pixmap . Обязательно проверьте следующее свойство scaledContents , чтобы уменьшить изображение до размера, который вы хотите видеть.

Вот и все, изображение теперь будет отображаться.

3 голосов
/ 13 мая 2014

Я понимаю ваше разочарование, что "Виджет графического представления" - не лучший способ сделать это, да, это может быть сделано, но это почти точно так же, как использование метки (для того, что вы хотите любым способом) теперь всеми перечисленные работают, но ...

Для вас и любого другого, кто может столкнуться с этим вопросом, он проще всего это сделать (то, что вы спрашиваете в любом случае), это.

QPixmap pix("Path\\path\\entername.jpeg");
    ui->label->setPixmap(pix);

}

1 голос
/ 14 февраля 2018

Использование QPainter и QImage для рисования на виджете окна (QMainWindow) (просто другой метод)

class MainWindow : public QMainWindow
{    
    public:
        MainWindow();
    protected:
        void paintEvent(QPaintEvent* event) override;

    protected:
        QImage image = QImage("/path/to/image.jpg");
};

// for convenience resize window to image size
MainWindow::MainWindow()
{
    setMinimumSize(image.size());
}

void MainWindow::paintEvent(QPaintEvent* event)
{
    QPainter painter(this);
    QRect rect = event->rect();
    painter.drawImage(rect, image, rect);
}


int main(int argc, char** argv)
{
    QApplication a(argc, argv);

    MainWindow mainWindow;
    mainWindow.show();
    return a.exec();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...