• 14547阅读
  • 4回复

请教Qpainter.drawText如何控制多行的行间距 [复制链接]

上一主题 下一主题
离线dxwang
 

只看楼主 倒序阅读 楼主  发表于: 2011-08-01
       请问一下Qpainter.drawText(rect, Qt::AlignTop, tr("Qt by\nTrolltech"));, 用\n 控制多行的时候,如何控制行间距。谢谢!
      我想用\n 来竖排文字,每个字符后面加一个\n,但是发现行间距太大,望指教!
每天进步一点点
离线wxj120bw

只看该作者 1楼 发表于: 2011-08-01
回 楼主(dxwang) 的帖子
帖下你的效果看下 文档显示间距不应该太大
离线dxwang

只看该作者 2楼 发表于: 2011-08-02
我意思是如何控制这个行间距呢,跟rect有关系吗,比如如果我希望行间距是行高的0.5,那么对于有nCount个字符的字符串,每个字符后面加一个"\n”,最后一个字符后面不需要加"\n",这个rect的行高是设置为多少呢。是 (2*nCount-1)* 1.5 * 行lineheight,还是 nCount * 1.5 * lineheight.或者其他值
for(int i = 0; i < nCount - 1; i++)
{
    strTemp += text.mid(i,1);
    strTemp += "\n";
}
strTemp += text.right(1);
//rect.setRect(x, y, lineheight*2, (2 * nCount-1)*lineheight);
rect.setRect(x, y, lineheight*2, (nCount + 1) * 1.5 * lineheight);  
painter->drawText(rect,Qt::AlignCenter,strTemp);
前者的情况下,当多列的情况下,随着nCount不同的时候,起始显示位置有偏差。
后者的情况下,字符不能完全显示。
主要是“\n” 不知道如何控制成0.5*lineheight
我需要确切知道列高,来画控制点。


如果用下面这段代码:则无法控制同一列的文字和字母居中对齐
    for(int i = 0; i < nCount; i++)
    {
        strTemp = text.mid(i,1);
        painter->drawText (QPointF(x,y + i*lineheight*1.5),strTemp);
    }

所以上面两种方式竖排文字的时候,各有缺陷。
每天进步一点点
离线wxj120bw

只看该作者 3楼 发表于: 2011-08-04
回 2楼(dxwang) 的帖子
解决了吗    你要求同一列的文字和字母对齐,但文字应该比字母更宽吧。
离线zhaohj5200

只看该作者 4楼 发表于: 2011-12-28
期待高手的答案
快速回复
限100 字节
 
上一个 下一个