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函数
相关文章推荐
- Qt:程序桌面图标生成
- qt-creator源码研究2
- VS2010与QT的集成开发环境
- QThread多线程编程经典案例分析
- QT在windows下的安装
- QT中窗口刷新事件的学习总结
- QT 网络编程
- 用QT 写的一个Log
- QTableview QSqlTableModel如何最恰当地只显示一个表中的某几个字段的数据
- QT延时:阻塞延时与非阻塞延时
- qt-creator源码研究与调试
- qt捕获全局windows消息
- Qt之QThread
- Qt之QThread
- QT 5.0.2 Install On Ubuntu12.04 (x86_64)
- QTableWidget去除选中虚边框
- Qt容器类
- qt creator 快捷操作
- QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置
- 用QtWebKit开发简单的浏览器