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

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

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM