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));