QT-横向滚动显示字体
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-横向滚动显示字体相关推荐
- android gridview横向显示图片,Android使用Gridview单行横向滚动显示
本文实例为大家分享了Android使用Gridview单行横向滚动显示的具体代码,供大家参考,具体内容如下 要想实现滚动显示,layout布局里必须要使用HorizontalScrollView,才能 ...
- 微信小程序scroll-view 横向滚动 显示下拉条的问题
微信小程序开发中,scroll-view的横向滚动,是一个常见的排列布局的方式,其实现的代码如下: wxml部分: <scroll-view class="scroll-view_H& ...
- android文字多行滚动显示,Android TextView多行文本滚动实现
Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局.只要在l ...
- 【Qt开发】【ARM-Linux开发】 QT在ARM上显示字体的问题
在PC机上利用QT开发的应用程序在 设置字体时,在PC上运行,可根据自己的设置,字体随之变大或变小.而移植到ARM上运行时发现,显示 字 体与所设置的字体不用,字体普遍偏小.经过上网搜索发现,是环境变 ...
- 创建一个简单的应用程序窗口,显示“欲穷千里目 更上一层楼”。这一行文字从窗口中向左滚动显示,而且每显示一轮,改变一次颜色,改变一次字体,一个周期为4种颜色,分别为红、绿、黄、蓝,四种字体分别为宋体、楷
创建一个简单的应用程序窗口,显示"欲穷千里目 更上一层楼".这一行文字从窗口中向左滚动显示,而且每显示一轮,改变一次颜色,改变一次字体,一个周期为4种颜色,分别为红.绿.黄.蓝,四 ...
- vue实现横向滚动条显示,竖向滚动条隐藏但能滚动
一开始的需求是横向竖向都隐藏但能滚动,有两种方法: 在滚动区域外面加一层div,设置overflow:hidden:或者设置scrollbar的display属性. // 方法一,设置父级元素over ...
- 嵌入式Qt方案中文显示系列:Qte中的字体支持和使用
随着嵌入式系统的不断发展,人们对于嵌入式系统的可靠性.安全性和性能的要求也越来越高.在嵌入式系统中,字体的支持和使用是一个非常重要的问题,因为字体不仅影响着系统的外观,也会影响到系统的性能和安全性.本 ...
- AndroidStudio_安卓原生开发_显示不开的时候设置TextView文字横向滚动---Android原生开发工作笔记142
设置横向滚动首先要在layout的xml文件中先给TextView加入: <TextView ... android:ellipsize="marquee" android: ...
- 2022-11 CSS:flex布局父子宽度问题-小程序scrollView-div横向滚动字体超出隐藏-居中
1.父盒子不限制宽度,子盒子跟随子盒子最长长度 如上图第二行子元素宽度会跟随第一行宽度 解决方案: 对第二行设置:width: max-content; 使其宽度跟随自身内容 2.flex布局时,挤压 ...
最新文章
- ABAP TBL控制插入和更改
- 如何在C++中调用python程序?
- linux——awk 报告生成器
- 未来不是计算机发展的方向,未来人类的方向,或许不是人工智能,而是智能人类...
- OV7725学习之SCCB协议(一)
- win10系统用户访问ftp服务器被拒绝,关于windows2003下ftp用户名无法访问FTP服务器的问题...
- spring mvc学习(51):jsonp
- 本科生完成9篇SCI,担任顶刊审稿人!
- pythoncsv文件的操作_python操作CSV文件
- Pc端微信加群的测试用例
- struts教程笔记6
- 构造函数= default;_C++核心准则C.46:默认状态下明确定义单参数构造函数
- 华为悦盒EC6108V9教程
- 我们盘点了7家财税SaaS平台,深入解读财税SaaS AB面
- 自己实现的promise
- mysql 误删表怎么恢复_怎么恢复navicat删除的表
- 活着就是要做有意义的事,做有意义的事就是好好活着
- 计算机运算器的功能,计算机中运算器的主要功能
- 部署到gcp_肿瘤内科成功举办基础研究及GCP云端学术论坛
- word 加载MathType打开时显示“安全警告,宏已被禁用”解决办法