4

为什么使用以下代码我只得到一个空表小部件?

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] 的元素以不同的方式突出显示:青色,左侧有一个细蓝条...

4

3 回答 3

8

你做的几乎都是正确的,但试着控制你的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!";
}

希望,对你有帮助!祝你好运!

于 2013-01-16T21:17:14.437 回答
5

好的,我不得不重新调整图像:

thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img).scaled(100, 100));
于 2013-01-17T09:35:17.613 回答
2

您可以尝试以下方法 - 这里我们使用资源文件夹中的图像...

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>
于 2020-08-31T16:13:26.957 回答