QT显示歌词渐变

Posted xshang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT显示歌词渐变相关的知识,希望对你有一定的参考价值。

       central = new QWidget(this);
	setCentralWidget(central);
	central->setAutoFillBackground(true);
	central->setWindowOpacity(1);
	label = new QLabel(tr("这是一首歌,请你记住它,不要忘记"),central);
	label2 = new QLabel(central);
	label2->move(100, 150);
	label2->resize(500,50);
	label->move(100, 150);
	label->resize(500,50);
	QFont ft;
	ft.setPointSize(15);
	label->setFont(ft);
	label->setAttribute(Qt::WA_TranslucentBackground);
	label2->setFont(ft);
	label2->setAttribute(Qt::WA_TranslucentBackground);
	str = tr("这是一首歌,请你记住它,不要忘记");
	count=1;
	QTimer *timer = new QTimer(this);
	connect(timer, SIGNAL(timeout()), this, SLOT(paint()));
	timer->start(1000);
void label_test::paint()
{
	count++;
	update();
	qDebug()<<count;
}

void label_test::paintEvent(QPaintEvent *e)
{
	QLinearGradient linearGrad(QPointF(100, 150), QPointF(200, 200));
	linearGrad.setColorAt(0, Qt::red);
	linearGrad.setColorAt(0.5, Qt::yellow);
	linearGrad.setColorAt(1, Qt::green);

	QBrush brush(linearGrad);
	QPalette palette;
	palette.setBrush(QPalette::WindowText, brush);
	
	int length = str.length();
	if(count > length)
	{
		count = 1;
	}
	label2->setPalette(palette);
	//label->setText("");
	QString s = str.mid(0, count);

	label2->setText(s);
	label2->show();
	
	
}

主要思路是用两个qlabel 控件,第二个QLabel控件每次都重新绘制第一个QLabel.

repaint会自动调用paintEvent函数

  

以上是关于QT显示歌词渐变的主要内容,如果未能解决你的问题,请参考以下文章

Qt 绘图渐变填充

Qt 之图形(渐变填充)

android实现文字渐变效果和歌词进度的效果

GDIPlus绘制桌面歌词

用Qt实现歌词连续滚动

Qt 歌词有关内容