Qt實(shí)現(xiàn)字幕滾動(dòng)效果的示例代碼_第1頁(yè)
Qt實(shí)現(xiàn)字幕滾動(dòng)效果的示例代碼_第2頁(yè)
Qt實(shí)現(xiàn)字幕滾動(dòng)效果的示例代碼_第3頁(yè)
Qt實(shí)現(xiàn)字幕滾動(dòng)效果的示例代碼_第4頁(yè)
Qt實(shí)現(xiàn)字幕滾動(dòng)效果的示例代碼_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Qt實(shí)現(xiàn)字幕滾動(dòng)效果的示例代碼目錄一、項(xiàng)目介紹二、項(xiàng)目基本配置三、UI界面設(shè)計(jì)四、主程序?qū)崿F(xiàn)4.1widget.h頭文件4.2widget.cpp源文件五、效果演示

一、項(xiàng)目介紹

利用QTimer實(shí)現(xiàn)字幕滾動(dòng)功能,可以實(shí)現(xiàn)自行更改文本內(nèi)容、自適應(yīng)文本大小、自由調(diào)整速度等功能。

二、項(xiàng)目基本配置

新建一個(gè)Qt案例,項(xiàng)目名稱(chēng)為T(mén)extScroll,基類(lèi)選擇QWidget,取消創(chuàng)建UI界面復(fù)選框的選中狀態(tài),完成項(xiàng)目創(chuàng)建。

三、UI界面設(shè)計(jì)

無(wú)UI界面

四、主程序?qū)崿F(xiàn)

4.1widget.h頭文件

聲明私有變量和事件:

private:

QTimer*timer;//時(shí)間定時(shí)器

QRgbtextColor;//文本顏色

QStringm_text;//文本內(nèi)容

QStringm_showText;//顯示

QFontfont;//字體

intm_ms;

intm_pixelSize;

intm_moveOffset;

intm_moveSize;

intblankSuffix;//空白后綴,值越大空白后綴越多

floatspeed;//滑動(dòng)速度,值越大越快

voidpaintEvent(QPaintEvent*event);

voidresizeEvent(QResizeEvent*event);

聲明函數(shù)和槽函數(shù):

public:

voidsetDelay(intms,intpixelSize);//設(shè)置滾動(dòng)延遲,多少ms滾動(dòng)多少像素點(diǎn)

voidsetText(QStringtext,QRgbtextColor,floatspeed=0.70,intblankSuffix=20);//設(shè)置字體,調(diào)用該函數(shù)后,將會(huì)自動(dòng)啟動(dòng)定時(shí)器來(lái)滾動(dòng)字幕

//voidrestart();

publicslots:

voidtimeOut();

4.2widget.cpp源文件

主函數(shù)內(nèi)容如下:

resize(600,100);//調(diào)整窗口大小

timer=newQTimer(this);//創(chuàng)建定時(shí)器

connect(timer,SIGNAL(timeout()),this,SLOT(timeOut()));

QStringtext="人生百相,世態(tài)萬(wàn)千,悲悲喜喜,才構(gòu)成了人生的完美;謀事在人,成事在天。"

"做過(guò)的事不要后悔。經(jīng)??梢钥吹讲簧偃俗栽棺园?

"為曾經(jīng)做過(guò)的錯(cuò)事后悔不已,為過(guò)去的事而消沉,為過(guò)去的事而落魄。世上永遠(yuǎn)沒(méi)有后悔藥。";

QRgbtextColor=qRgb(67,142,219);//字體顏色——藍(lán)色

floatspeed=0.4;

intblankSuffix=0;

setText(text,textColor,speed,blankSuffix);

timeOut()槽函數(shù):

//槽函數(shù)

voidWidget::timeOut(){

qDebug()m_moveOffsetm_moveSize;

m_moveOffset+=m_pixelSize;

if(m_moveOffsetm_moveSize)

m_moveOffset=0;

update();

調(diào)整窗口大小resizeEvent事件:

voidWidget::resizeEvent(QResizeEvent*event)

font.setPixelSize(event-size().height()*0.75);//字體大小(這里設(shè)置為窗口高度的0.75倍)

m_showText=m_text;

QFontMetricsmetrics(font);

intchar_w=metrics.horizontalAdvance("");//Qt5.11之后,之前請(qǐng)用width()

setDelay(30,char_w*speed);//滾動(dòng)延時(shí)

intblankLine=width()/char_w+1;

for(inti=0;iblankLine;i++)

m_showText.insert(0,"");//開(kāi)頭插入blankLine個(gè)空格

m_moveSize=metrics.horizontalAdvance(m_showText)+blankSuffix;

m_moveOffset=0;

update();

重寫(xiě)繪制事件paintEvent:

//繪圖事件

voidWidget::paintEvent(QPaintEvent*event)

QPainterpainter(this);

painter.setFont(font);//設(shè)置字體

painter.setPen(QColor(120,120,120));//設(shè)置畫(huà)筆顏色——灰色

painter.drawRect(QRect(0,0,width()-1,height()-1));//主窗口繪制矩形

painter.setPen(QColor(textColor));//文字顏色

painter.drawText(QRect(-m_moveOffset,0,width()-1+m_moveOffset,height()-1),

Qt::AlignVCenter|Qt::AlignLeft,m_showText);//繪制文字,水平居左垂直居中

定義滾動(dòng)延遲函數(shù):

//設(shè)置滾動(dòng)延遲,多少ms滾動(dòng)多少像素點(diǎn)pixelSize

voidWidget::setDelay(intms,intpixelSize)

this-m_ms=ms;

this-m_pixelSize=pixelSize;

設(shè)置字體相關(guān)信息:

//設(shè)置字體相關(guān)信息(text:字體內(nèi)容,textColor:顏色,speed:字體滾動(dòng)速度,blankSuffix:留白大小)

voidWidget::setText(QStringtext,QRgbtextColor,floatspeed,intblankSuffix)

this-blankSuffix=blankSuffix;

this-speed=speed;

font.setFamily("MicrosoftYahei");//字體樣式——微軟雅黑

font.setPixelSize(height()*0.0001);//字體像素大小

this-textColor=textColor;//字體顏色

m_text=text;//文本內(nèi)容

m_showText=m_text;//顯示內(nèi)容

//計(jì)算字符大小

QFontMetricsmetrics(font);

intchar_w=metrics.horizontalAdvance("");//Qt5.11之后,之前請(qǐng)用width()

se

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論