项视图类的自定义委托之文字省略
来源:互联网 发布:软件操作手册 编辑:程序博客网 时间:2024/06/06 01:47
本文是原创呦呦呦呦呦呦呦呦,装载请表明装载地址。
最近在做项视图类的自定义委托的事情,知道自定义委托其中包含两个类QItemDelegate和QStyledItemDelegate,这两者的区别这里就不说了,可以查看说明文档。仔细查看这两个类,就会发现QItemDelegate带有drawBackground()、drawCheck()、drawDecoration()、drawDisplay()、drawFocus()这些方便的绘制函数,但是QStyledItemDelegate却完全没有这些函数,而我却要使用QStyledItemDelegate,并且想要做出drawDisplay()对文字的显示效果(这个效果就是当文字的宽度比对应项的宽度大的时候,文字会变成带有点的省略模式ElideMode,例如,”我的名字叫做Hurricane”的文字省略效果就是”我的名字叫…”)。
经过了一番的探索,终于给我探索出来了,方法如下:void ListWidgetDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option,
const QModelIndex & index) const
{
……
painter->save();
QRect rc = option.rect;
int textH = 15;
QRect topRect = QRect(rc.topLeft(), QPoint(rc.right(), rc.bottom() - textH));
QRect bottomRect = QRect(topRect.bottomLeft(), rc.bottomRight());
QFontMetrics fontMetrics = painter->fontMetrics();
text = fontMetrics.elidedText(text, option.textElideMode, rc.width());
painter->drawText(bottomRect, Qt::AlignCenter, text);
painter->restore();
……
}
也就是利用QPainter::fontMetrics()函数返回对应painter的字体度量参数,并且QFontMetrics这个类有一个函数elidedText()就是返回对应的省略文字。
探索过程:
我一开始是查看QStyleOptionViewItem这个类的说明文档以寻求解决办法,结果发现了
详细说明如下:
然后,我又点击了上面框住的Qt::TextElideMode,有如下的说明:
然后,我又想起了QPainter类是有关于font的函数,查看QPainter的说明文档,搜索“font”发现如下:
0 0
- 项视图类的自定义委托之文字省略
- Qt学习:项视图类之自定义委托
- css省略超出的文字,用...代替
- TextView中文字的省略显示
- UILabel文字过长时的文字省略位置
- 视图上的委托
- 文字超长省略显示
- 文字过长省略
- 文字省略样式
- table文字超出省略
- 重写的:c#字符串截取文字省略[winform学习示例]
- CSS实现table td中文字的省略与显示
- CSS实现table td中文字的省略与显示
- 超出的文字用省略,用…代替
- 懂点网站交互(4):省略多余的文字
- Qt学习:项视图类之自定义模型
- 自定义的委托 事件
- android:ellipsize省略文字用法
- 继承和多态
- GYM 100285 E. The Emperor’s plan(组合数学+dp)
- 黑马程序员----泛型(Generic)
- hdoj1950Bridging signals(最长上升子序列)
- 《數據結構與算法分析:C語言描述》習題2.13c代碼及自己的想法
- 项视图类的自定义委托之文字省略
- 关于Android长按出现复制粘贴栏在顶部占位问题解决方法
- SSH页面懒加载异常处理方法
- BestCoder Round #51 (div.2) 1001 Zball in Tina Town
- UIView的类别实现之设置frame
- hadoop系列:zookeeper(3)——zookeeper核心原理(事件)
- HDU ACM 1000 A+B Problem
- IOS--UI--XML 解析
- sublime 配置自动补全和跳转