寫代碼前。首先我們肯定要新建一個項目。
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控件。右鍵點擊提升。類名填寫我們創建的類,注意。如果頭文件跟類名不一致,注意對應填寫即可。
然后運行。試試效果把。
自己做項目中遇到的記錄下來。