如下所示:
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr);
signals:
void blink();
protected:
void paintEvent(QPaintEvent *event) override;
private:
bool m_blinkState;
};
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
m_blinkState = false;
connect(this, &MyWidget::blink, [=](){
m_blinkState = !m_blinkState;
update();
});
}
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPen pen(Qt::SolidLine);
pen.setWidth(2);
if(m_blinkState){
pen.setColor(Qt::red);
}else{
pen.setColor(Qt::black);
}
painter.setPen(pen);
// 绘制线条,此处省略具体实现
}
当收到blink()
信号时,更新m_blinkState
的值,并调用update()
函数让paintEvent
重新绘制。在paintEvent
中根据m_blinkState
的值选择画笔颜色。这样就可以让画出来的线闪起来了。