加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

QTableWidget之表头塌陷、光标移动

(2013-01-24 11:19:27)
标签:

qtablewidget

表头塌陷

表头选中

编辑

杂谈

分类: Qt

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

 

 

1、表头塌陷

 

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

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

 

现象介绍:

    这其实属于同一种情况,就是在表格中只有一行的时候选中该行表头就会塌陷也会被选中,全选的会后也会出现以上现象!之前的解决的方法是设置表头颜色和字体来掩饰这种现象,但是这分明是程序的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上、下、左、右等其他键移动事件也就不起作用了!

更多参考:


注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有