Qt QLabel 逐字显示的方法

本文介绍了一种在嵌入式环境下使用QLabel组件进行中文逐字显示的技术方案,通过定时器控制每次显示一个字符来减轻CPU负担,提高显示效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因:嵌入式里QLabel显示一大堆中文时,效率相当的差。
由于中文的编码和解码的方式特殊,在显示中文文字时,需要一个个的去检索字体,造成CPU 负荷相当的重,致使绘制效率也变低。因此本人(Venus)采用了逐字显示的方法来提高效率,而且显示上也很特别,有点像事实播报一样,具体实现代码如下:

#include <QtCore>
#include <QtGui>
class Test: public QLabel
{
    Q_OBJECT
public:

    Test()
        :m_inc(0)
    {
        connect(&m_time, SIGNAL(timeout()), SLOT(changed()));
        m_time.start(30);
        QLabel::setWordWrap(true);
        setWordWrap(true);
    }

    void setText ( const char *text )
    {
       m_text = m_text.fromLocal8Bit(text);
    }

private slots:
    void changed()
    {
        m_inc ++;
        if (m_inc >= m_text.size())
            m_time.stop();
        else
            QLabel::setText(m_text.left(m_inc));
    }

private:
    int m_inc;
    QTimer m_time;
    QString m_text;
};
#include "label.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget win;
    win.setFixedSize(800,480);
    QVBoxLayout *box = new QVBoxLayout;
    win.setLayout(box);

    Test *a = new Test;
    box->addWidget(a);
    a->setText("我现在有一Buffer里存放了16bit 的图像数据,我想让它在QT程序里显示出来该怎么办呢?在之前我用Qimage 类构造一个image图,但显示出来的图像颜色不对。实现的过程如下 :");
    win.show();

    return app.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值