
class QRollLabel:public QLabel
{Q_OBJECTpublic:QRollLabel(QWidget *parent=nullptr):QLabel(parent){mRollingText="我不是萧海哇111111111111111111111111111";setText(mRollingText);resize(300,150);QFontMetrics fm(this->font()); // 使用当前widget的字体mTextWidth = fm.horizontalAdvance(mRollingText); // 推荐使用这个QTimer *t=new QTimer(this);connect(t,&QTimer::timeout,[=](){mPosx-=10;update();if(mPosx<=-mTextWidth){mPosx=mTextWidth;}});t->start(100);QVariant var;var.setValue(true);this->setProperty("canMove", var);installEventFilter(this);}void paintEvent(QPaintEvent *event){QPainter painter(this);if(!mRollingText.isEmpty()){painter.drawText(QRect(mPosx,0,mTextWidth,30),Qt::AlignLeft,mRollingText);}}bool eventFilter( QObject *obj, QEvent *e ){
// Q_ASSERT(obj == m_editMsg);if (e->type() == QEvent::KeyPress){QKeyEvent *event = static_cast<QKeyEvent*>(e);if (event->key() == Qt::Key_Return && (event->modifiers() & Qt::ControlModifier)){qDebug()<<"ctrl+enter press";return true;}else if (event->key() == Qt::Key_D && (event->modifiers() & Qt::AltModifier)){qDebug()<<"alt+d press";return true;}else if (event->key() == Qt::Key_Return){qDebug()<<"return press";return true;}}return false;}private:QString mRollingText;int mTextWidth=100;int mPosx=0;
};
