Qt 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只需要给出父容器中间位置即可。

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

 

原文地址:https://www.cnblogs.com/ybqjymy/p/15324189.html