QT文字变色技术-创新互联

#include "mainwindow.h"

创新互联专注于巴彦淖尔企业网站建设,响应式网站开发,成都做商城网站。巴彦淖尔网站建设公司,为巴彦淖尔等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

#include "ui_mainwindow.h"

#include

#include

#include

//#include "BannerWidget.h"

MainWindow::MainWindow(QWidget *parent) :

  QMainWindow(parent),m_nStep(0),

  m_strText("QT007 QT文字变色术"),

  ui(new Ui::MainWindow)

{

  ui->setupUi(this);

  setAutoFillBackground(true);

    // 设置文字大小

    QFont newFont = font();

    newFont.setBold(true);

    newFont.setPointSize(newFont.pointSize() + 40);

    setFont(newFont);

    m_timer.start(100, this);

}

MainWindow::~MainWindow()

{

  m_timer.stop();

  delete ui;

}

void MainWindow::paintEvent(QPaintEvent *event)

{

  Q_UNUSED(event);

  // 计算文本绘制的起始坐标

  QFontMetrics metrics(font());

  int x = (width() - metrics.width(m_strText)) / 2;

  int y = (height() + metrics.ascent() - metrics.descent()) / 2;

  QColor color;

  QPainter painter(this);

  for (int i = 0; i < m_strText.size(); ++i)

  {

    // 设置色调(H)、饱和度(S)、亮度(V)

    int nIndex = (m_nStep + i) % 16;

    color.setHsv((15 - nIndex) * 16, 255, 191);

    painter.setPen(color);

    // 单个字符绘制

    painter.drawText(x, y, QString(m_strText[i]));

    // 计算下一个字符的x坐标起始点

    x += metrics.width(m_strText[i]);

  }

}

void MainWindow::timerEvent(QTimerEvent *event)

{

  Q_UNUSED(event);

  if (event->timerId() == m_timer.timerId())

  {

    ++m_nStep;

    update();

  }

  else

  {

    QWidget::timerEvent(event);

  }

}

void MainWindow::setText(const QString &text)

{

  m_strText = text;

}

QT文字变色技术

QT文字变色技术

附件:http://down.51cto.com/data/2368315

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站题目:QT文字变色技术-创新互联
当前地址:http://azwzsj.com/article/jicdj.html