在看了Qt书中介绍用QTableWidget和QItemDelegate实现自定义委托。现在想用QStyledItemDelegate和QTableView实现自定义委托。但是实现后发现有以下问题:
当修改第二列时间(hh:mm)时,修改后的时间可以正确显示,但是当光标离开输入框时,时间又会恢复为初始值。
截图如下:
我始终没有找到可行的办法,麻烦个人达人帮忙看看。谢谢
注:在此我不想手动创建Item项来保存数据,不知是否可行。
我用的是Qt5.4;QtCreator。
源码地址:http://yunpan.cn/cfNfGDStanA6R 提取码 91a8
------解决思路----------------------
看了下你的代码,你的TrackModel中setData的问题, 根本无视参数value, 不用这么复杂,下面的的代码就够了
bool TrackModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if ( !index.isValid()) {
return false;
}
if (Qt::EditRole == role) {
if (1 == index.column()) {
((*tracks)[index.row()]).setDuration(value.toInt());
}
}
emit dataChanged(index, index);
return true;
}