在接触Qt的这段时间里,用的比较多的还属QTableWidget,真是让人欢喜让人忧,很长一段时间里,被两个Bug困扰着,今天,一鼓作气,全部拿下!
1、表头塌陷
现象1: 
现象二: 
现象介绍:
这其实属于同一种情况,就是在表格中只有一行的时候选中该行表头就会塌陷也会被选中,全选的会后也会出现以上现象!之前的解决的方法是设置表头颜色和字体来掩饰这种现象,但是这分明是程序的Bug,能解决就一定得解决!每天都会抽时间来研究,呵呵,皇天不负有心人!虽然解决方法很简单,但是过程啊。。。煎熬
解决方法:
//点击表时不对headerView(表头行)光亮(获取焦点)
this->horizontalHeader()->setHighlightSections(false);
2、编辑表格项
现象:
现象介绍:
原本是闲的功能为打开制定的表格项进行编辑,其他项不能编辑,但是效果却如上图,在按下Tab键时竟然可以切换,原本打算屏蔽点Tab键,毕竟Tab键是Qt功能本身是默认定义好的,所以最后也就放弃了那种做法!
//打开新建表格项编辑状态
table_widget->openPersistentEditor(it);
//指定格处于光标闪烁状态,键盘输入的文字会在光标处出现
table_widget->editItem(it);
//关闭编辑状态
table_widget->closePersistentEditor(edit_item);
解决方法:
QModelIndex TableWidget::moveCursor(CursorAction cursorAction,
Qt::KeyboardModifiers modifers)
{
if(file_handler->edit_row >= 0)
{
return currentIndex();
}
else
{
return QTableWidget::moveCursor(cursorAction, modifers);
}
}
重写移动光标事件,当存在编辑项的时候,让光标永远位于当前项(编辑项),否则返回父类,else中的语句比较重要,因为如果缺少了那段代码,那么QTableWidget上、下、左、右等其他键移动事件也就不起作用了!
更多参考:
注:
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
加载中,请稍候......