Qt QLabel 逐字顯示的方法

起因:嵌入式裏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();
}
發佈了3 篇原創文章 · 獲贊 3 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章