您的位置:首页 > 编程语言 > Qt开发

QT显示歌词渐变

2016-07-01 17:14 253 查看
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函数

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: