资源简介
使用qtcreator 绘制类似跑马灯的效果 换行圈,可以设置每个小车的颜色

代码片段和文件信息
#include “carwidget.h“
#include
#include
#include
CarWidget::CarWidget(QWidget *parent) : QWidget(parent)
{
m_iCar = 76;
m_iCarWidth = 0;
m_index = 0;
m_type = Left;
m_bgColor = QColor(686868);
m_carColor = QColor(20190150);
m_textColor = QColor(255255255);
m_iSize = 10;
}
CarWidget::~CarWidget()
{
}
void CarWidget::paintEvent(QPaintEvent *p)
{
QPainter painter(this);
//绘制背景色
painter.setBrush(m_bgColor);
painter.setPen(m_bgColor);
painter.drawRect(rect());
paintCar(painter);
return QWidget::paintEvent(p);
}
void CarWidget::resizeEvent(QResizeEvent *)
{
calc();
update();
}
void CarWidget::calc()
{
QRect rect = this->geometry();
//圆的直径
int iDiameter = rect.width() < rect.height() ? rect.width() : rect.height();
//上下留5个像素
m_iDiameter = iDiameter - 10;
m_iLeft = m_iDiameter * 3 / 100 > 0 ? m_iDiameter * 3 / 100 : 3;
m_iRight = width() - m_iDiameter + m_iLeft;
int iLength = 3.14 * m_iDiameter + 2 * ( width() - m_iDiameter );
//平均的距离
m_iCarWidth = iLength / ( m_iCar * 1.5 );
}
void CarWidget::paintCar(QPainter &painter)
{
//Y的高度
int iHeight = (height() - m_iDiameter) / 2 + m_iCarWidth;
painter.setRenderHint(QPainter::Antialiasing true);
painter.setPen(m_carColor);
QPainterPath path;
path.addEllipse(m_iCarWidth iHeight m_iDiameter - m_iCarWidth * 2 m_iDiameter - m_iCarWidth * 2);
QPainterPath pathRect;
pathRect.addRect(m_iDiameter / 2 + m_iCarWidth
iHeight
width() - m_iDiameter - m_iCarWidth * 2
m_iDiameter - m_iCarWidth * 2);
path = path.united(pathRect);
pathRect.addEllipse(width() - m_iDiameter + m_iCarWidth
iHeight
m_iDiameter - m_iCarWidth * 2
m_iDiameter - m_iCarWidth * 2);
path = path.united(pathRect);
//painter.drawPath(path);
QFont font;
font.setPointSize(m_iSize);
painter.setFont(font);
if(m_type == Right)
{
if(m_index >= m_iCar)
{
m_index = 0;
}
}
else if(m_type == Left)
{
if(m_index <= -m_iCar)
{
m_index = 0;
}
}
for(int i = 0 ; i < m_iCar ; i++ )
{
QPointF point = path.pointAtPercent(i / (m_iCar * 1.0));
int index = m_type == Right ? (i + m_index) % m_iCar + 1 : (i + m_iCar + m_index) % m_iCar + 1;
painter.setPen(m_textColor);
painter.drawText(point QString(“%1“).arg(index));
mapColorCar::iterator iter = m_mapCar.find(index);
if( iter != m_mapCar.end())
{
painter.setPen(iter.value());
painter.setBrush(iter.value());
}
else
{
pain
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3739 2018-08-13 14:41 跑马灯\carwidget.cpp
文件 3306 2018-08-13 14:41 跑马灯\carwidget.h
目录 0 2018-08-13 15:07 跑马灯
----------- --------- ---------- ----- ----
7045 3
- 上一篇:ICL8038信号发生器PROTUES仿真绝对好使
- 下一篇:example.zip
相关资源
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
评论
共有 条评论