ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qt QGraphicsTextItem居中/左对齐/右对齐

2021-09-23 15:02:42  阅读:175  来源: 互联网

标签:Qt width align pos alignState item QGraphicsTextItem 对齐


刚刚开始想学习Qt,不是很了解,做居中操作的时候看了很多大佬的写法不是非常理解,这里按照自己的理解写的比较简单的实现,具体需要boundingRect()函数获取宽度信息,就可以以给定参数定位。

二话不说,先上代码:

 1 QGraphicsTextItem* MainWindow::createTextItem(QString text, int fontSize, int alignState, QPointF pos)
 2 {
 3     /*
 4         0 ------- align left
 5         1 ------- align center
 6         2 ------- align right
 7     */
 8  
 9     QGraphicsTextItem *item = new QGraphicsTextItem(text);
10     item->setFont(QFont("宋体", fontSize));
11     qreal width = item->boundingRect().width();
12  
13     if(alignState == 1)
14     {
15         item->setPos(pos.x() - width / 2, pos.y());
16         qDebug() << item->textWidth();
17         return item;
18     }else if(alignState == 2)
19     {
20         item->setPos(pos.x() - width, pos.y());
21         return item;
22     }else       // default is align left
23     {
24         item->setPos(pos);
25         return item;
26     }
27  
28 }

用法非常简单。传入的pos表示定位,alignState表示以什么情况定位。如果是居中定位,则定位pos只需要给出父容器中间位置即可。

原理如下图,左对齐和右对齐原理同上。

 

 

标签:Qt,width,align,pos,alignState,item,QGraphicsTextItem,对齐
来源: https://www.cnblogs.com/ybqjymy/p/15324189.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有