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

Отображение изображения Qt jpg

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

Спасибо.

4b9b3361

Ответ 1

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

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

Ответ 2

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

...

QPixmap image("blah.jpg");

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

mainLayout.addWidget(imageLabel);

...

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

Ответ 3

Если единственное, что вы хотите сделать - это падение изображения на виджет с учетом сложности графического 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

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

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

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QLabel label("<img src='image.jpg' />");
    label.show();
    return a.exec();
}

Ответ 5

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

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

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

}

Ответ 6

  • Добавьте ярлык (QLabel) в диалог, в котором вы хотите показать изображение. Этот QLabel фактически отобразит изображение. Измените его размер до необходимого размера.

  • Добавьте изображение в свои ресурсы в свой проект.

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

Теперь все будет отображаться.

Ответ 7

Использование 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();
}