正在从QTableWidgetItem获取值
Getting value from QTableWidgetItem
本文关键字:获取 QTableWidgetItem 更新时间:2023-10-16
我想将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();
}
事实上,我想让imagePath担任其中一个角色,但我在应用程序控制台中得到了这一行:
DecorationRole: ""
DisplayRole: ""
如何获得价值?有什么建议吗?
编辑:我想在每个QTableWidgetItem上显示图像,然后我想存储我显示的图像的图像路径。
如果您实际上需要存储QString
,则需要两次DisplayRole
:
itemMedia->setData(Qt::DisplayRole, imagePath);
qDebug()<<"DisplayRole: " <<item->data(Qt::DisplayRole).toString();
编辑:如果你需要显示图像并获取图像文件路径,我建议你另一种方式:
1) 像你一样设置图像:
itemMedia->setData(Qt::DecorationRole, QPixmap(imagePath).scaled(width, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation));
2) 使用Qt::UserRole
设置图像路径
itemMedia->setData(Qt::UserRole, imagePath);
当你需要的时候:
qDebug()<<"File Path: " <<item->data(Qt::UserRole).toString();
但应用程序将使用图像进行显示。
QTableWidgetItem::data()
返回QVariant
,您将在其中使用QVariant::value()
获取数据。
或者,使用QTableWidget::text()
。
http://doc.qt.io/qt-5/qtablewidgetitem.html
存储QPixmap:
itemMedia->setData(Qt::DecorationRole, QPixmap(imagePath).scaled(width, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation));
但尝试将其提取为QString:
qDebug()<<"DecorationRole: " <<item->data(Qt::DecorationRole).toString();
这将始终为您提供一个默认构造的(即空的)QString。
您想将其检索为QPixmap:
item->data(Qt::DecorationRole).value<QPixmap>()
(尽管将其发送到QDebug流没有什么意义!)
你很有可能想要原始的、未缩放的像素图。在这种情况下,您还需要将其存储在Qt::UserRole
:中
itemMedia->setData(Qt::UserRole, QPixmap(imagePath));
并将检索更改为匹配。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何在qtablewidget中获取字符串的行号
- qtableWidget获取垂直标头标签
- 如果我点击它的子项,如何获取QTableWidget的当前行
- 如何获取QTableWidget列标签值
- 从 Qtabewidgetitem 中更改的文本获取文本 qtablewidget
- 按列进行排序后,如何从qtablewidget :: item(qt bug?)中获取正确的行
- 通过单击垂直标题获取QTableWidget的行索引
- QTableWidget复选框获取状态和位置
- 如何从QTableWidget::setCellWidget()中获取文本
- Qt:从QTableWidget中的按钮获取文本
- 在QTableWidget中获取QCheckBox的单元格位置
- QTableWidget项获取Widget类型并访问它