QT-横向滚动显示字体

  • 一、效果演示
  • 二、关键类
  • 三、下载链接

一、效果演示

二、关键类

代码如下(示例):

#include "HLabelEx.h"
#include <QPainter>
#include <QTimer>
#include <QFontMetrics>
#include <QTimerEvent>const QString strSpace("   ");HLabelEx::HLabelEx(QWidget *parent) : QLabel(parent)
{setStyleSheet(QString("color:red;"));timerId = -1;fontSize = 15;
}void HLabelEx::setText(const QString & txt)
{QLabel::setText(txt);upateLabelRollingState();
}void HLabelEx::paintEvent(QPaintEvent *e)
{QPainter p(this);//  获取文本框的大小QRect rc = rect();rc.setHeight(rc.height() - 2);rc.setWidth(rc.width() - 2);//  设置即将绘制文字的字体QFont ft = font();ft.setBold(true);ft.setPointSize(fontSize);p.setFont(ft);p.setPen(QPen(Qt::red));//  设置绘制文字的开始位置,也就是将文字往左移动多少rc.setLeft(rc.left() - left);//  如果文字已经显示到末尾,则再添加一遍文字,做出循环滚动的效果QString strText = text();if(timerId >= 0)strText += strSpace + text();//  绘制文字p.drawText(rc, Qt::AlignVCenter, strText);
}void HLabelEx::timerEvent(QTimerEvent *e)
{if(e->timerId() == timerId && isVisible()){//  每次左移1个像素left += 1;//  判断是否已经完成一遍循环,完成则恢复起始位置,重新开始循环QFont ft = font();ft.setPointSize(fontSize);QFontMetrics fm(ft);int txtWidth = fm.width(text());int spaceWidth = fm.width(strSpace);if((txtWidth + spaceWidth) < left)left = 0;repaint();}QLabel::timerEvent(e);
}void HLabelEx::resizeEvent(QResizeEvent *e)
{QLabel::resizeEvent(e);upateLabelRollingState();
}void HLabelEx::upateLabelRollingState()
{//  获取文本大小,小于文本框长度,则无需滚动QFont ft = font();ft.setPointSize(fontSize);QFontMetrics fm(ft);int nW = fm.width(text());left = 0;//  开启文本框滚动if(nW > width()){timerId = startTimer(100);}//  关闭文本框滚动else{if(timerId >= 0){killTimer(timerId);timerId = -1;}}
}

三、下载链接

https://download.csdn.net/download/u013083044/80041463

QT-横向滚动显示字体相关推荐

  1. android gridview横向显示图片,Android使用Gridview单行横向滚动显示

    本文实例为大家分享了Android使用Gridview单行横向滚动显示的具体代码,供大家参考,具体内容如下 要想实现滚动显示,layout布局里必须要使用HorizontalScrollView,才能 ...

  2. 微信小程序scroll-view 横向滚动 显示下拉条的问题

    微信小程序开发中,scroll-view的横向滚动,是一个常见的排列布局的方式,其实现的代码如下: wxml部分: <scroll-view class="scroll-view_H& ...

  3. android文字多行滚动显示,Android TextView多行文本滚动实现

    Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局.只要在l ...

  4. 【Qt开发】【ARM-Linux开发】 QT在ARM上显示字体的问题

    在PC机上利用QT开发的应用程序在 设置字体时,在PC上运行,可根据自己的设置,字体随之变大或变小.而移植到ARM上运行时发现,显示 字 体与所设置的字体不用,字体普遍偏小.经过上网搜索发现,是环境变 ...

  5. 创建一个简单的应用程序窗口,显示“欲穷千里目 更上一层楼”。这一行文字从窗口中向左滚动显示,而且每显示一轮,改变一次颜色,改变一次字体,一个周期为4种颜色,分别为红、绿、黄、蓝,四种字体分别为宋体、楷

    创建一个简单的应用程序窗口,显示"欲穷千里目 更上一层楼".这一行文字从窗口中向左滚动显示,而且每显示一轮,改变一次颜色,改变一次字体,一个周期为4种颜色,分别为红.绿.黄.蓝,四 ...

  6. vue实现横向滚动条显示,竖向滚动条隐藏但能滚动

    一开始的需求是横向竖向都隐藏但能滚动,有两种方法: 在滚动区域外面加一层div,设置overflow:hidden:或者设置scrollbar的display属性. // 方法一,设置父级元素over ...

  7. 嵌入式Qt方案中文显示系列:Qte中的字体支持和使用

    随着嵌入式系统的不断发展,人们对于嵌入式系统的可靠性.安全性和性能的要求也越来越高.在嵌入式系统中,字体的支持和使用是一个非常重要的问题,因为字体不仅影响着系统的外观,也会影响到系统的性能和安全性.本 ...

  8. AndroidStudio_安卓原生开发_显示不开的时候设置TextView文字横向滚动---Android原生开发工作笔记142

    设置横向滚动首先要在layout的xml文件中先给TextView加入: <TextView ... android:ellipsize="marquee" android: ...

  9. 2022-11 CSS:flex布局父子宽度问题-小程序scrollView-div横向滚动字体超出隐藏-居中

    1.父盒子不限制宽度,子盒子跟随子盒子最长长度 如上图第二行子元素宽度会跟随第一行宽度 解决方案: 对第二行设置:width: max-content; 使其宽度跟随自身内容 2.flex布局时,挤压 ...

最新文章

  1. ABAP TBL控制插入和更改
  2. 如何在C++中调用python程序?
  3. linux——awk 报告生成器
  4. 未来不是计算机发展的方向,未来人类的方向,或许不是人工智能,而是智能人类...
  5. OV7725学习之SCCB协议(一)
  6. win10系统用户访问ftp服务器被拒绝,关于windows2003下ftp用户名无法访问FTP服务器的问题...
  7. spring mvc学习(51):jsonp
  8. 本科生完成9篇SCI,担任顶刊审稿人!
  9. pythoncsv文件的操作_python操作CSV文件
  10. Pc端微信加群的测试用例
  11. struts教程笔记6
  12. 构造函数= default;_C++核心准则C.46:默认状态下明确定义单参数构造函数
  13. 华为悦盒EC6108V9教程
  14. 我们盘点了7家财税SaaS平台,深入解读财税SaaS AB面
  15. 自己实现的promise
  16. mysql 误删表怎么恢复_怎么恢复navicat删除的表
  17. 活着就是要做有意义的事,做有意义的事就是好好活着
  18. 计算机运算器的功能,计算机中运算器的主要功能
  19. 部署到gcp_肿瘤内科成功举办基础研究及GCP云端学术论坛
  20. word 加载MathType打开时显示“安全警告,宏已被禁用”解决办法

热门文章

  1. 概率和统计学知识汇总
  2. 生化危机系列中有实用价值且能最快实现的技术
  3. Apple M1 Macos 安装虚拟机软件UTM
  4. 达梦数据库函数-trim,ltrim,rtrim函数用法
  5. Unity的text从左到右的字体渐变色(参考
  6. 信息化与信息系统(1)
  7. 视觉惯性单目SLAM (三)优化方法
  8. 人生经典的12条语录
  9. 伴侣,您如何进行身份验证?
  10. python通过jdbc访问数据库