Qt QGraphicsTextItem居中/左对齐/右对齐

刚刚开始想学习Qt,不是很了解,做居中操作的时候看了很多大佬的写法不是非常理解,这里按照自己的理解写的比较简单的实现,具体需要boundingRect()函数获取宽度信息,就可以以给定参数定位。

二话不说,先上代码:

QGraphicsTextItem* MainWindow::createTextItem(QString text, int fontSize, int alignState, QPointF pos)
{
    /*
        0 ------- align left
        1 ------- align center
        2 ------- align right
    */

    QGraphicsTextItem *item = new QGraphicsTextItem(text);
    item->setFont(QFont("宋体", fontSize));
    qreal width = item->boundingRect().width();

    if(alignState == 1)
    {
        item->setPos(pos.x() - width / 2, pos.y());
        qDebug() << item->textWidth();
        return item;
    }else if(alignState == 2)
    {
        item->setPos(pos.x() - width, pos.y());
        return item;
    }else       // default is align left
    {
        item->setPos(pos);
        return item;
    }

}

用法非常简单。传入的pos表示定位,alignState表示以什么情况定位。如果是居中定位,则定位pos只需要给出父容器中间位置即可。

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

 如果理解,欢迎直接copy,同时默念,cv大法好,cv大法保平安,cv大法早下班

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值