我想在编辑换行和退出当前tableview编辑(如鼠标切换焦点到其他控件)时发出信号,进行数据校验、提交等工作(即每编辑完一行后进行校验提交,不管后续是继续编辑另一行,还是直接退出当前表的编辑)。
目前想到的方法是在currentChanged里记录行号和两个QModelIndex的isvalid,现在发现两个问题:
1、焦点切换出去后并没有进入currentChanged;
2、两个item切换的话,使用键盘的tab实现和使用鼠标点击实现,两者的实现并不一样:
1)使用键盘的时候,currentChanged里的current和previous两个参数直接记录切换的两个item的index;打印的日志如下:
[ "11:00:19 153" ..\..\sgLibs\sgtableview.cpp : 396 on currentChanged ] "tableView_gz" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< current is QModelIndex(17,12,0x0,QSqlTableModel(0x6c3a040)) previous is QModelIndex(17,8,0x0,QSqlTableModel(0x6c3a040)) valid is [ true , true ]
2)使用鼠标点击切换的时候,中间会加一个invalid的状态,即current先切换为QModelIndex(-1,-1,0x0,QObject(0x0)),即invalid,然后马上又切换为实际的item的index,打印的日志如下:
[ "11:01:54 408" ..\..\sgLibs\sgtableview.cpp : 396 on currentChanged ] "tableView_gz" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< current is QModelIndex(-1,-1,0x0,QObject(0x0)) previous is QModelIndex(19,2,0x0,QSqlTableModel(0x6b52c40)) valid is [ false , true ]
[ "11:01:54 408" ..\..\sgLibs\sgtableview.cpp : 396 on currentChanged ] "tableView_gz" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< current is QModelIndex(19,3,0x0,QSqlTableModel(0x6b52c40)) previous is QModelIndex(-1,-1,0x0,QObject(0x0)) valid is [ true , false ]
请问:
这种情况下,我怎么实现我需要的功能?