写代码前。首先我们肯定要新建一个项目。
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控件。右键点击提升。类名填写我们创建的类,注意。如果头文件跟类名不一致,注意对应填写即可。
然后运行。试试效果把。
自己做项目中遇到的记录下来。