QTableWidget之表头塌陷、光标移动

来源:互联网 发布:农村淘宝佣金 编辑:程序博客网 时间:2024/05/17 22:20

    在接触Qt的这段时间里,用的比较多的还属QTableWidget,真是让人欢喜让人忧,很长一段时间里,被两个Bug困扰着,今天,一鼓作气,全部拿下!

 

 

1、表头塌陷

 

现象1:   

现象二:  

 

现象介绍:

    这其实属于同一种情况,就是在表格中只有一行的时候选中该行表头就会塌陷也会被选中,全选的会后也会出现以上现象!之前的解决的方法是设置表头颜色和字体来掩饰这种现象,但是这分明是程序的Bug,能解决就一定得解决!每天都会抽时间来研究,呵呵,皇天不负有心人!虽然解决方法很简单,但是过程啊。。。煎熬

 

解决方法:

    //点击表时不对headerView(表头行)光亮(获取焦点) 
     this->horizontalHeader()->setHighlightSections(false);

 

2、编辑表格项

 

现象:QTableWidget之表头塌陷、光标移动

 

现象介绍:

    原本是闲的功能为打开制定的表格项进行编辑,其他项不能编辑,但是效果却如上图,在按下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上、下、左、右等其他键移动事件也就不起作用了!

更多参考:

  • QTableWidget详解(样式、右键菜单、表头塌陷、多选等).


注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。
    作者:╰☆奋斗ing❤孩子`  原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101b1cr.html。
0 0
原创粉丝点击