ticker.cpp
来自「C++ GUI Programming with Qt 4一书中的chap07源」· C++ 代码 · 共 60 行
CPP
60 行
#include <QtGui>
#include "ticker.h"
Ticker::Ticker(QWidget *parent)
: QWidget(parent)
{
offset = 0;
myTimerId = 0;
}
void Ticker::setText(const QString &newText)
{
myText = newText;
update();
updateGeometry();
}
QSize Ticker::sizeHint() const
{
return fontMetrics().size(0, text());
}
void Ticker::paintEvent(QPaintEvent * /* event */)
{
QPainter painter(this);
int textWidth = fontMetrics().width(text());
if (textWidth < 1)
return;
int x = -offset;
while (x < width()) {
painter.drawText(x, 0, textWidth, height(),
Qt::AlignLeft | Qt::AlignVCenter, text());
x += textWidth;
}
}
void Ticker::showEvent(QShowEvent * /* event */)
{
myTimerId = startTimer(30);
}
void Ticker::timerEvent(QTimerEvent *event)
{
if (event->timerId() == myTimerId) {
++offset;
if (offset >= fontMetrics().width(text()))
offset = 0;
scroll(-1, 0);
} else {
QWidget::timerEvent(event);
}
}
void Ticker::hideEvent(QHideEvent * /* event */)
{
killTimer(myTimerId);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?