当前位置: 代码迷 >> QT开发 >> C++ Gui Programming with Qt4 中关于delegate的例子改写,有个有关问题
  详细解决方案

C++ Gui Programming with Qt4 中关于delegate的例子改写,有个有关问题

热度:711   发布时间:2016-04-25 03:04:22.0
C++ Gui Programming with Qt4 中关于delegate的例子改写,有个问题
在看了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;
}
  相关解决方案