有时某些特殊需求需要实现类似光标的闪烁效果,例如下图:
这种效果用计时器可以实现,光标线段在paintEvent事件中进行绘制,两次绘制,根据时间的变化改变画笔的颜色即可,空白的线段的颜色和背景色保持一致,这样就实现了闪烁,代码如下
头文件:
#ifndef WIDGET_H #define WIDGET_H #includeQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); void paintEvent(QPaintEvent* e) override; void timerEvent(QTimerEvent * e) override; private: Ui::Widget *ui; long long m_count = 0; int timerID; }; #endif // WIDGET_H
cpp文件