zoukankan      html  css  js  c++  java
  • 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只需要给出父容器中间位置即可。

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

     

  • 相关阅读:
    Photoshop 2021 for Mac
    viscose live serves 扩展工具更改默认自动打开的浏览器
    UML面向对象分析、建模与设计
    Shell 脚本
    早做打算,不要随遇而安。
    编程人员成长模型
    Spring AOP详解
    Mybatis逆向工程的配置
    Int和String互转的方法
    SQL学习
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/15324189.html
Copyright © 2011-2022 走看看