QT制作字幕滚动效果
2013-03-28 16:22
253 查看
//.h文件 #include<QWidget> classwidget:publicQWidget
{
Q_OBJECT
Q_PROPERTY(QString text READ text WRITE setText)
public:
explicitwidget(QWidget*parent=0);
voidsetText(constQString&newText);
QStringtext()const{returnmyText;}
QSizesizeHint()const;
protected:
voidpaintEvent(QPaintEvent*event);
voidtimerEvent(QTimerEvent*event);
voidshowEvent(QShowEvent*event);
voidhideEvent(QHideEvent*event);
private:
QStringmyText;
intoffset;
intmyTimerId;
}; .cpp文件
#include"widget.h"
#include<QPainter>
#include<qcoreevent.h>
widget::widget(QWidget*parent):
QWidget(parent)
{
offset=0;
myTimerId=0;
}
voidwidget::setText(constQString&newText)
{
myText=newText;
update();
updateGeometry();
}
QSizewidget::sizeHint()const
{
returnfontMetrics().size(0,text());
}
voidwidget::paintEvent(QPaintEvent*event)
{
QPainterpainter(this);
inttextWidth=fontMetrics().width(text());
if(textWidth<1)
return;
intx=-offset;
while(x<width()){
painter.drawText(x,0,textWidth,height(),
Qt::AlignLeft|Qt::AlignVCenter,text());
x+=textWidth;
}
}
voidwidget::timerEvent(QTimerEvent*event)
{
if(event->timerId()==myTimerId){
++offset;
if(offset>=fontMetrics().width(text()))
offset=0;
scroll(-1,0);
}else{
QWidget::timerEvent(event);
}
}
voidwidget::showEvent(QShowEvent*event)
{
myTimerId=startTimer(40);
}
voidwidget::hideEvent(QHideEvent*event)
{
killTimer(myTimerId);
myTimerId=0;
} main文件
#include<QApplication>
#include<widget.h>
#include<QTextCodec>
intmain(intargc,char*argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));//解决乱码显示问题
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));//解决乱码显示问题
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));//解决乱码显示问题
QApplicationa(argc,argv);
widgetw;
w.setWindowTitle(QObject::tr("Ticker"));//设置标题
w.setText(QObject::tr("我爱你,亲爱哒"));//设置滚动的文字
w.show();
returna.exec();
}
相关文章推荐
- QT---字幕滚动效果,检测鼠标进入和离开控制字幕滚动
- Qt 5滚动字幕(左/右)+闪烁效果(QLabel控件显示)
- Qt实现滚动字幕效果
- VS2005 VC6.0 用VC++制作有滚动字幕效果的软件封面
- cocos2d-x 利用精灵的可见区域制作字幕滚动效果
- 字幕滚动效果---非常酷哦
- [原]Windows mobile 上自定义的一个滚动字幕效果的控件
- 关于网页页面制作滚动字幕
- WPF实现上下滚动字幕效果
- Pycharm + PyQt5 + QtDesigner实现通过Qtdesigner添加QScrollArea,在代码中添加控件实现滚动效果
- Qt之滚动字幕
- 用Dreamweaver8学习网页滚动字幕的制作
- Qt实现滚动字幕
- C# WinForm窗体中制作滚动的字幕
- 解决qt滚动字幕cpu占用过高的问题
- Qt(QLabel)实现滚动字幕
- Qt之滚动字幕
- 详解用CSS3制作圆形滚动进度条动画效果
- Qt设置字幕滚动播放
- 二、JavaScript语言--JS实践--信息滚动效果制作