Qt - Невозможно поместить изображение в таблицу

Почему с помощью следующего кода я просто получаю виджет пустой таблицы?

QString imgPath = "C:\\path\\to\\image.jpg";
QImage *img = new QImage(imgPath);

QTableWidget     *thumbnailsWidget = new QTableWidget;
QTableWidgetItem *thumbnail = new QTableWidgetItem;
thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img));

thumbnailsWidget->setColumnCount(5);
thumbnailsWidget->setRowCount(3);
thumbnailsWidget->setItem(0, 0, thumbnail);

setCentralWidget(thumbnailsWidget);

Как я могу поместить изображение в QTableWidgetItem?

Спасибо.

P.S.:
Я заметил, что таблица на самом деле не пуста. Щелкая по разным элементам QTableWidgetItem, пустые становятся синими, элемент с координатами [0,0] подсвечивается иначе: голубой с тонкой синей полосой слева...


person Pietro    schedule 16.01.2013    source источник


Ответы (3)


Вы все делаете почти правильно, но попробуйте управлять своим img, например, так:

QString imgPath = "C:\\path\\to\\image.jpg";
QImage *img = new QImage();
bool loaded = img->load(imgPath);
if (loaded) {
    QTableWidget *thumbnailsWidget = new QTableWidget;
    QTableWidgetItem *thumbnail = new QTableWidgetItem;
    thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img));

    thumbnailsWidget->setColumnCount(5);
    thumbnailsWidget->setRowCount(3);
    thumbnailsWidget->setItem(0, 0, thumbnail);

    w.setCentralWidget(thumbnailsWidget);
} else {
    qDebug()<<"Image "<<imgPath<<" was not opened!";
}

Надеюсь, это поможет вам! Удачи!

person tro    schedule 16.01.2013
comment
Готово. Изображение загружено правильно... так что ничего не изменилось. - person Pietro; 17.01.2013
comment
Вы пробовали разные изображения (с разными форматами изображений — png, jpg и т. д.)? - person tro; 17.01.2013

ОК, мне пришлось изменить масштаб изображения:

thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img).scaled(100, 100));
person Pietro    schedule 17.01.2013
comment
Если это действительно была ваша проблема, то вы очень невнимательны. Отметьте свой вопрос как решенный. - person tro; 17.01.2013
comment
Не волнуйся. Я сделаю это завтра. - person Pietro; 17.01.2013
comment
Как получить данные (получить путь img)? - person ; 01.12.2015
comment
@FarzanNjr - данные находятся в образе (то есть в файле на диске), и его путь жестко запрограммирован. Просто чтобы не усложнять и сосредоточиться на вопросе. - person Pietro; 07.12.2015

Вы можете попробовать следующее - здесь мы используем изображения из папки ресурсов...

QString imgPath = ":/image.png";
QImage imageName = *new QImage(imgPath);

QTableWidgetItem *thumbnail = new QTableWidgetItem;
thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(imageName));

а затем - установите миниатюру в строку / столбец таблицы, который вы хотите иметь - например, в столбце 1 и строке 1:

tableWidget->setItem( 1, 1, thumbnail);

вы должны отметить, что вам нужен конкретный заголовочный файл:

#include <QPixmap>
person Ensai Tankado    schedule 31.08.2020