主页 > 开源代码  > 

qt实现文字跑马灯效果

qt实现文字跑马灯效果

实现跑马灯的方式多种多少样,可以通过定时器,或者animation等来实现。

本文通过定时器,将第一个文字,移动到最后一个这种方式来实现,还有其他方式哈。

直接上源码

h文件

#ifndef TEXTTICKER_H #define TEXTTICKER_H #include <QtWidgets/QLabel> #include<QDebug> /*跑马灯标签文字*/ class TextTicker : public QLabel { Q_OBJECT public: TextTicker(QWidget *parent = 0); ~TextTicker(); void setText(QString text); void setFontSize(int fontsize); protected: void paintEvent(QPaintEvent *event); private slots: void updateText(); private: int m_position; QString m_showText; int fontsize = 50; QString visibleText; }; #endif // TEXTTICKER_H

cpp文件

#include "TextTicker.h" #include <QPainter> #include <QTimer> TextTicker::TextTicker(QWidget *parent) : QLabel(parent),m_position(0) { QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &TextTicker::updateText); timer->start(500); } TextTicker::~TextTicker() { } void TextTicker::setText(QString text) { m_showText = text; } void TextTicker::setFontSize(int fontsize) { this->fontsize = fontsize; } void TextTicker::paintEvent(QPaintEvent *event) { (void) event; QPainter painter(this); painter.setFont(QFont("宋体",fontsize)); painter.drawText(0 , rect().height() / 2 + fontsize /2 ,visibleText);化 } void TextTicker::updateText() { visibleText = m_showText.mid(m_position) + m_showText.left(m_position); setText(visibleText); m_position = (m_position + 1) % m_showText.length(); update(); // 触发重绘事件 }

标签:

qt实现文字跑马灯效果由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“qt实现文字跑马灯效果