1.實現效果
做了兩種實現方式,畫素滾動比較順滑。
支援qlabel樣式表設定字型顏色邊框等。
支援實時縮放。
2.簡述
實現思路1
準備足夠顯示滿寬的字元,每次刪除最左邊的乙個字元,不夠顯示的時候,在後邊追加字元。
實現思路2
畫乙個寬度是label寬度+文字寬度的文字框,從x=0開始,每次將文字框的起始位置減1。當乙個完整文字寬度被減完之後,重新從x=0開始畫。
實現1
#
include
"crolllabel.h"
#include
#include
crolllabel::
crolllabel
(qwidget *parent)
:qlabel
(parent)
void crolllabel::
paintevent
(qpaintevent *event)
painter.
drawtext
(rect()
,alignment()
,m_strdrawtext);}
void crolllabel::
timerevent
(qtimerevent *event)
m_ncurrentindex++;if
(m_ncurrentindex > m_strtext.
size()
)update()
;}----
----
----
----
----
----
----
----
----
----以上是原始檔,以下是標頭檔案
#ifndef
crolllabel_h
#define
crolllabel_h
#include
#include
class crolllabel : public qlabel
protected:
void
paintevent
(qpaintevent *event)
;void
timerevent
(qtimerevent *event)
;private:
int m_ncharwidth =0;
int m_ncurrentindex =0;
qstring m_strtext;
qstring m_strdrawtext;};
#endif
// crolllabel_h
實現2
#
include
"cscrolllabel.h"
#include
#include
cscrolllabel::
cscrolllabel
(qwidget *parent)
:qlabel
(parent)
void cscrolllabel::
paintevent
(qpaintevent *event)
void cscrolllabel::
timerevent
(qtimerevent *event)
while
(fontmetrics()
.width
(m_strdrawtext)
<
width()
+ m_ntextwidth)
m_ncurrentindex++;if
(m_ncurrentindex == m_ntextwidth)
update()
;}----
----
----
----
----
----
----
----
----
----以上是原始檔,以下是標頭檔案
#ifndef
cscrolllabel_h
#define
cscrolllabel_h
#include
#include
class cscrolllabel : public qlabel
protected:
void
paintevent
(qpaintevent *event)
;void
timerevent
(qtimerevent *event)
;private:
int m_ncharwidth =0;
int m_ncurrentindex =0;
//文字起始x點
int m_ntextwidth =0;
qstring m_strtext;
qstring m_strdrawtext;};
#endif
// cscrolllabel_h
無縫文字滾動
乙個常見的無縫文字滾動,結合css構建的區域形成即時新聞列表,與常見滾動有所不同的是,我們增加了手動控制,即 如果文字滾動錯過了想要看的文章標題,您可以按向上或向下的控制按鈕進行返回操作。文章源自 烈火網,原文 即時新聞 盛大遊戲獲 最終幻想14 大陸獨家運 盛大和cntv.cn成立合資遊戲公司易橙...
文字上下滾動
效果圖 無間隙文字向上滾動1a li href 無間隙文字向上滾動2a li href 無間隙文字向上滾動3a li href 無間隙文字向上滾動4a li href 無間隙文字向上滾動5a li href 無間隙文字向上滾動6a li href 無間隙文字向上滾動7a li ul div div ...
JQ 文字無縫滾動之逐條滾動
jq 本列子是從下向上滾動的,如果時其他方向的修改marginbttom就可以了 function var this this this.timer null this.lineh this.find li first height this.line opt.line?parseint opt.l...