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

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

     

  • 相关阅读:
    Servlet与JSP转发与包含---forwardinclude
    爬虫---正则表达式
    MapReduce的核心资料索引
    设计模式之单例模式Singleton pattern
    HTTP会话的使用与管理
    (二)jquery学习----jquery的效果
    (一)jquery学习
    webStorm2017 安装及使用
    linux下的符号链接和硬链接
    <初级程序员> git 的初级使用
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/15324189.html
Copyright © 2020-2023  润新知