Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从QTableWidgetItem获取值_C++_Qt_Qtablewidgetitem - Fatal编程技术网

C++ 从QTableWidgetItem获取值

C++ 从QTableWidgetItem获取值,c++,qt,qtablewidgetitem,C++,Qt,Qtablewidgetitem,我想将QTableWidgetItem的数据设置为图像。imagePath每次都可能不同 QTableWidgetItem *itemMedia = new QTableWidgetItem(); itemMedia->setTextAlignment(Qt::AlignCenter); itemMedia->setData(Qt::DecorationRole, QPixmap(imagePath).scaled(width, 100, Qt::KeepAspectRatio, Q

我想将
QTableWidgetItem
的数据设置为图像。imagePath每次都可能不同

QTableWidgetItem *itemMedia = new QTableWidgetItem();
itemMedia->setTextAlignment(Qt::AlignCenter);
itemMedia->setData(Qt::DecorationRole, QPixmap(imagePath).scaled(width, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation));
m_table->setItem(0,0,itemMedia);
m_table->setItem(0,1,itemMedia);
m_table->setItem(1,0,itemMedia);
m_table->setItem(1,1,itemMedia);
我做得很好。接下来,我想通过以下方式获取数据:

connect(m_table, SIGNAL(itemClicked(QTableWidgetItem *)), this, SLOT(onItemClicked(QTableWidgetItem *)));

void MUCSharedMedia::onItemClicked(QTableWidgetItem *item)
{
    qDebug()<<"DecorationRole: " <<item->data(Qt::DecorationRole).toString();
    qDebug()<<"DisplayRole: " <<item->data(Qt::DisplayRole).toString();
}
如何获得价值?有什么建议吗

编辑:
我想在每个QTableWidgetItem上显示图像,然后我想存储我显示的图像的图像路径。

QTableWidgetItem::data()
返回
QVariant
,在那里您可以使用
QVariant::value()
获取数据

或者,使用
QTableWidget::text()


如果您需要存储
QString
实际上,您需要
DisplayRole
两次:

itemMedia->setData(Qt::DisplayRole, imagePath);

qDebug()<<"DisplayRole: " <<item->data(Qt::DisplayRole).toString();
2) 使用
Qt::UserRole

itemMedia->setData(Qt::UserRole, imagePath);
当您需要时:

qDebug()<<"File Path: " <<item->data(Qt::UserRole).toString();
qDebug()

itemMedia->setData(Qt::DecorationRole, QPixmap(imagePath).scaled(width, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation));
item->data(Qt::DecorationRole).value<QPixmap>()
但尝试将其提取为QString:

qDebug()<<"DecorationRole: " <<item->data(Qt::DecorationRole).toString();

并将检索更改为匹配。

是否将imagePath作为字符串存储在每个项目中?然后尝试在这两种情况下都使用DisplayRole?或者您想存储实际图像,请澄清我想设置图像并获取图像路径。我从文件路径回答了关于QImage的问题,但同样的方法可以获取所需的相关图像类我想将数据设置为实际图像并获取数据为qstring@afn:您从一开始就说过要在每个项目中存储imagePath是,但这只是最后一部分。我想在每个QTableWidgetItem上显示图像,然后我想存储我显示的图像的图像路径。请用所有这些详细信息编辑您的问题,以便清楚您实际需要什么?
qDebug()<<"DecorationRole: " <<item->data(Qt::DecorationRole).toString();
item->data(Qt::DecorationRole).value<QPixmap>()
itemMedia->setData(Qt::UserRole, QPixmap(imagePath));