quhongyue
//.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();
}

分类:

技术点:

相关文章:

  • 2021-09-23
  • 2022-12-23
  • 2021-12-03
  • 2021-10-20
  • 2022-01-02
  • 2022-12-23
  • 2022-01-20
猜你喜欢
  • 2021-10-18
  • 2021-10-18
  • 2021-05-30
  • 2021-06-11
  • 2022-12-23
相关资源
相似解决方案