• 12210阅读
  • 6回复

关于QFontMetrics [复制链接]

上一主题 下一主题
离线xinqingfly
 

只看楼主 倒序阅读 楼主  发表于: 2006-04-21
QFontMetrics 计算字符串的大小时能识别换行符吗,就是在遇到换行符时自动将高增加一倍
菜鸟也是鸟
离线shiroki

只看该作者 1楼 发表于: 2006-04-24
这个应该取决于font
个人意见
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线longteng9
只看该作者 2楼 发表于: 2011-03-30
楼主的问题解决了吗?QFontMetrics 可以识别换行吗?
离线roywillow

只看该作者 3楼 发表于: 2011-03-30
其实你可以试试看
获得高度的函数是不能提供文本信息的,大概这个高度是从字体本身信息来的
好像有个boundingRect函数可以返回包围文本的最小矩形,至于能否多行不清楚,并且有时候可能返回的值有些差错
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线wangshaohui
只看该作者 4楼 发表于: 2011-12-08
我在用QFontMetircs时怎么提示'QFontMetircs' : undeclared identifier,这是怎么回事呢?
离线cutemmll
只看该作者 5楼 发表于: 2011-12-09
回 楼主(xinqingfly) 的帖子
额,貌似是不能的。
QFontMetrics返回的高度,只是针对字体本身而言;
而boundingRect这个函数,在文档中明确说明它无视换行符的,原话如下:
Newline characters are processed as normal characters, not as linebreaks.

所以如果你想要自己计算某一段文字的高度,可以尝试使用QTextDocument
1、使用 QTextDocument::setPlainText  设置你需要输入的文本
2、使用QTextDocument::setDefaultFont设置默认的字体
3、使用QTextDocument::setTextWidth设置宽度
4、使用QTextDocument::size获取文本段的大小。

ps:以上方法仅供参考,我并未测试过。
c------------enjoy qt & enjoy life-----------++
离线novesky

只看该作者 6楼 发表于: 2011-12-09
可以。用QFontMetrics::size(int flags, const QString & text, int tabStops = 0, int * tabArray = 0)来获得绘制好后的尺寸
快速回复
限100 字节
 
上一个 下一个