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?

Спасибо.

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

2 ответа

Решение

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

thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img).scaled(100, 100));

Вы делаете все почти правильно, но попробуйте контролировать свой 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!";
}

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

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

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>
Другие вопросы по тегам