Qt/C++ 跑马灯效果
来源:互联网 发布:mib browser for mac 编辑:程序博客网 时间:2024/06/17 16:01
直接上代码合适:
头文件
classMusicMarqueeWidget:publicQWidget
{
Q_OBJECT
public:
explicit MusicMarqueeWidget(QWidget *parent = 0);
void setText(const QString &newText)
QString text() const { return m_myText; }
QSize sizeHint() const;
protected:
virtual void paintEvent(QPaintEvent *event);
virtual void showEvent(QShowEvent *event);
virtual void hideEvent(QHideEvent *event);
virtual void timerEvent(QTimerEvent *event);
private:
QString m_myText;
int m_offset;
int m_myTimerId;
};
源文件:
MusicMarqueeWidget::MusicMarqueeWidget(QWidget *parent): QWidget(parent){
m_offset = 0;m_myTimerId = 0;setStyleSheet("color:white");}
void MusicMarqueeWidget::setText(const QString &newText){
int length = fontMetrics().width(newText) >= width() ? 45 : 25;m_myText = newText.leftJustified(length, ' ');update();updateGeometry();}
QSize MusicMarqueeWidget::sizeHint() const{
return fontMetrics().size(0, text());}
void MusicMarqueeWidget::paintEvent(QPaintEvent *event){
QWidget::paintEvent(event);QPainter painter(this);QFont f(font());f.setBold(false);painter.setFont(f);int textWidth = fontMetrics().width(text());if(textWidth < 1){return;}int x = -m_offset;while(x < width()){painter.drawText(x, 0, textWidth, height(),Qt::AlignLeft | Qt::AlignVCenter, text());x += textWidth;}painter.end();}
void MusicMarqueeWidget::showEvent(QShowEvent *event){
QWidget::showEvent(event);m_myTimerId = startTimer(30);}
void MusicMarqueeWidget::timerEvent(QTimerEvent *event){
if(event->timerId() == m_myTimerId){++m_offset;if (m_offset >= fontMetrics().width(text())){m_offset = 0;}scroll(-1, 0);}else{QWidget::timerEvent(event);}}
void MusicMarqueeWidget::hideEvent(QHideEvent *event){
QWidget::hideEvent(event);killTimer(m_myTimerId);m_myTimerId = 0;}
应该没什么问题了
powered by:小乌龟在大乌龟背上
0 0
- Qt/C++ 跑马灯效果
- Qt/C++ 跑马灯效果~
- flex 跑马灯效果
- Android 跑马灯效果
- 跑马灯效果
- android跑马灯效果
- IOS 跑马灯效果
- android跑马灯效果
- 跑马灯效果
- 文字跑马灯效果
- 跑马灯效果
- Js跑马灯效果
- Js跑马灯效果
- 跑马灯效果
- TextView跑马灯效果
- 跑马灯效果练习
- 不间断跑马灯效果
- TextView跑马灯效果
- 20160511 GreenPlum6 分析函数之开窗函数、聚合函数与grouping sets用法
- Git详解之二 Git基础
- java中transient关键字作用
- 与h5交互
- runtime 运行时机制 完全解读
- Qt/C++ 跑马灯效果
- asp.net MVC _LayOut布局以及用户控件的使用
- Eclipse输入时自动提示
- OpenGL笔记(一)
- Git详解之四 服务器上的Git
- 串口流控 软件流控与硬件流控
- python数据结构之字符串查找两例
- 前端js干货
- 289. Game of Life