起因:嵌入式裏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(); }