首页 > 解决方案 > 委托后获取 QTableView 单元格文本

问题描述

displaytext我通过使用类中的函数来更改 QTableView 列的文本QStyledItemDelegate

QString Msg_NameGIdDelegate::displayText(const QVariant &value, const QLocale &locale) const
{
    return Diag_Utility::getMsgNameStr(value.toInt());
}

委托后如何获取此列中每个单元格的文本。如果我使用以下代码,我会在委托之前获得文本。

for(int i=0; i<ui->msgCount_tableView->model()->rowCount();i++)
    qDebug()<<ui->msgCount_tableView->model()->index(i,6).data().toString();

标签: c++qtdelegatesqtableview

解决方案


看起来您更改了委托文本但未更改模型数据,并且您正在获取模型数据并且您想要委托数据。

QAbstractItemDelegate *QAbstractItemView::itemDelegate(const QModelIndex &index)函数将返回您的委托,以便您获得displayText.

如果此解决方案不起作用,您可以通过model()->setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)函数而不是委托更改模型的数据displayText,您可以获取model->data()


推荐阅读