标签:width info timeout ini 下标 etc war 运行 ssi
写代码前。首先我们肯定要新建一个项目。
1.点击文件新建文件或项目
2.选择带界面的。名称自己写。然后继承widget。完成
3.这样,我们就得到了一个空的gui项目了。
新建一个能实现文字滚动的头.h文件和对应的.cpp文件
这一次选择c++类。点击下一步我们就会得到一个自己写好名字的头文件和源文件了
接下来就是代码了。这是头文件
随便提一下,这里我们重写了laber的绘画事件
以及新建了一个更新需要滚动的文字下标值类。
1 #include <QLabel> 2 3 class TextTicker : public QLabel 4 { 5 Q_OBJECT 6 7 8 public: 9 TextTicker(QWidget *parent = nullptr); 10 ~TextTicker(); 11 12 13 protected: 14 void paintEvent(QPaintEvent *); 15 void updateIndex(); 16 17 private: 18 int m_charWidth; //字符串宽度 19 int m_curIndex; 20 QString m_showText; //需要显示的字符串 21 public: 22 23 QString getText() 24 { 25 return m_showText; 26 } 27 };
接下来是源文件
这里预编译这里注意添加上自己的头文件 #include "xxx.h"
#include <QPainter> #include <QTimer> TextTicker::TextTicker(QWidget *parent) : QLabel(parent) { // setMinimumWidth(200); // setMinimumHeight(40); m_curIndex = 0;//当前文字下标值 m_showText = tr("Welcome to the image processing software of Star Dragon Company");//显示的文字 m_charWidth = fontMetrics().width("a");//每个字符的宽度 QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &TextTicker::updateIndex); timer->start(100); } TextTicker::~TextTicker() { } void TextTicker::paintEvent(QPaintEvent *) { QPen pen; pen.setColor(QColor(255,0,255)); pen.setStyle(Qt::DashDotDotLine); QFont font("楷体",14,QFont::Bold); QPainter painter(this); painter.setPen(pen); painter.setFont(font); painter.drawText(0, 15, m_showText.mid(m_curIndex)); painter.drawText(width() - m_charWidth*m_curIndex, 15, m_showText.left(m_curIndex)); } void TextTicker::updateIndex() { update(); m_curIndex++; if (m_curIndex*m_charWidth > width()) m_curIndex = 0; }
到这里基本就完成了。
接下来要做的就是在gui拖入一个laber控件。右键点击提升。类名填写我们创建的类,注意。如果头文件跟类名不一致,注意对应填写即可。
然后运行。试试效果把。
自己做项目中遇到的记录下来。
标签:width info timeout ini 下标 etc war 运行 ssi
原文地址:https://www.cnblogs.com/787959687-freedom/p/10710863.html