Reputation: 13164
Why with the following code I just get an empty table widget?
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);
How can I put an image into a QTableWidgetItem?
Thank you.
P.S.:
I noticed that the table is not really empty. Clicking on the different QTableWidgetItem elements, the empty ones become blue, the one with coordinates [0,0] is highlighted differently: cyan with a thin blue bar on the left...
Upvotes: 5
Views: 10279
Reputation: 7173
You are doing all almost right, but try to control your img
, for example, like this:
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!";
}
Hope, it helps you! Good luck!
Upvotes: 8
Reputation: 343
You can try the following - here we use images from the resource folder...
QString imgPath = ":/image.png";
QImage imageName = *new QImage(imgPath);
QTableWidgetItem *thumbnail = new QTableWidgetItem;
thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(imageName));
and then - set the thumbnail to the table row/col you want to have - for example in col 1 and row 1:
tableWidget->setItem( 1, 1, thumbnail);
you have to note that you need the specific header file:
#include <QPixmap>
Upvotes: 2
Reputation: 13164
OK, I had to rescale the image:
thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img).scaled(100, 100));
Upvotes: 5