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