当前位置: 首页 > 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(); // 触发重绘事件
}

http://www.dtcms.com/a/24928.html

相关文章:

  • 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
  • JavaEE -JDBC池化思想 与 IDEA导包
  • 【JavaScript】正则表达式综合案例
  • uniapp 支付宝小程序自定义顶部导航栏
  • Fiddler笔记
  • 高考或者单招考试需要考物理这科目
  • 基于SpringBoot的“食物营养分析与推荐网站”的设计与实现(源码+数据库+文档+PPT)
  • 使用 pjsua2 开发呼叫机器人,批量拨打号码并播放固定音频
  • Breakout Tool
  • 2025年网络安全(黑客技术)三个月自学手册
  • MAVEN学习