当前位置: 首页 > news >正文

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(); // 触发重绘事件
}

相关文章:

  • Windows服务器搭建时间同步服务
  • QT QLineEdit 如何支持文件拖放
  • DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)
  • Unity Mirror 多房间匹配
  • DeepSeek AI 完全使用指南:从入门到精通
  • CSDN、markdown环境下如何插入各种图(流程图,时序图,甘特图)
  • 线性模型 - Logistic回归(参数学习具体示例)
  • PHP Web 开发基础
  • 什么是网络安全?网络安全防范技术包括哪些?
  • 【DeepSeek-R1】 API申请(腾讯云)
  • 2022年SCI1区TOP:K-means聚类算法KO,深度解析+性能实测
  • 蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
  • 基于Odoo与IMAX-8工业物联技术的倍捻机智慧运维实施方案
  • Aseprite详细使用教程(9)——渐变工具
  • 电磁兼容(EMC):整改案例(十二)调整PCB叠层设计解决静电问题
  • SpringAI系列 - RAG篇(四) - QuestionAnswerAdvisor
  • 【拥抱AI】GPT Researcher如何自定义配置LLM
  • 纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型
  • git 学习(基于Ubuntu和gitee)
  • 动态规划 之 状态机dp
  • 北斗专访|特赞科技范凌:现在AI主要是“说话”,接下来要“干活”了
  • 刘永明|在从普及到提高中发展新大众文艺
  • 甘肃:今年6月前,由县级党委、政府制定农村彩礼倡导性标准
  • 来伊份:已下架涉事批次蜜枣粽产品,消费者可获额外补偿,取得实物后进一步分析
  • 被流量绑架人生,《人生开门红》能戳破网络时代的幻象吗
  • 中美经贸高层会谈在瑞士日内瓦举行