• 7937阅读
  • 2回复

关于 TextElideMode(表格列宽不足以显示全部内容时,省略号的位置) [复制链接]

上一主题 下一主题
离线napier
 

只看楼主 倒序阅读 楼主  发表于: 2011-10-11
View 的列宽不足以显示单元格的全部内容时,可以出现一个省略号表示内容未完全显示。省略的方向可以用 setTextElideMode() 设定,比如下图中就是 setTextElideMode ( Qt::ElideRight )。


我对这个设置有两个疑问:

一是能不能做到让不同的列的 TextElideMode 不同?setTextElideMode ( Qt::TextElideMode mode ) 是对整个 View 进行设置,会使每列都相同。能不能让第一列省略在左边,第二列省略在右边?

二是表头的文字不受 setTextElideMode ( Qt::TextElideMode mode ) 影响,不会出现省略号表示未完全显示。这个怎样解决比较好?


离线jorneyr

只看该作者 1楼 发表于: 2011-10-11
可以自己处理一下,
使用显示组件的QPainter::fontMetrics取得字体信息,再取得显示区域的大小,然后动态的计算可以显示的字符数,不够显示的就使用...代替
离线napier

只看该作者 2楼 发表于: 2011-10-16
第一个问题解决了,研究 Qt 源代码发现 view 的 textElideMode 是在 QStyleOptionViewItem 中控制的,于是使用一个自定义的 delegate,在 paint 函数中按照列的不同将 QStyleOptionViewItem::textElideMode 设为需要的值就可以了。
快速回复
限100 字节
 
上一个 下一个