QLabel文字从下至上显示

思路:

继承QLabel,重新绘制。

代码:

h文件

#ifndef VLABEL_H
#define VLABEL_H

#include<QPainter>
#include<QLabel>
#include<QDebug>

class vLabel : public QLabel
{
    Q_OBJECT
public:
    explicit vLabel(QWidget* parent = NULL);
    virtual ~vLabel();
    //绘制文字
    void drawText(QPainter *painter);
protected:
    void paintEvent(QPaintEvent *);
    int fontW;
    int fontH;

};

#endif // VLABEL_H

cpp文件

#pragma execution_character_set("utf-8")
#include "vlabel.h"

vLabel::vLabel(QWidget *parent): QLabel(parent)
{
}

vLabel::~vLabel()
{

}

void vLabel::drawText(QPainter *painter)
{
    painter->save();
    painter->setBrush(Qt::NoBrush);
    painter->translate(width()>>1,height()>>1);
    painter->rotate(-90.0);//旋转-90度
    QFontMetrics fm(this->font());
    fontW = fm.width(this->text());
    fontH = fm.height();
    this->setFixedHeight(fontW);
    this->setFixedWidth(fontH*2);
    painter->drawText(0-fontW/2,0+fontH/2,this->text());
    painter->restore();
}

void vLabel::paintEvent(QPaintEvent *)
{
    //绘制准备工作,启用反锯齿
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
    //绘制文字
    drawText(&painter);
}





运行截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fyzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值