QT用paintevent函数实现报警时按钮由红色变为蓝色
时间: 2024-05-02 15:17:50 浏览: 298
在Qt中,可以通过在QPushButton的paintEvent函数中实现按钮的自定义绘制来实现按钮颜色的变化。
下面是一个示例代码,实现了一个自定义的MyButton类,该类继承自QPushButton,当按钮被点击时,按钮的背景色从红色变为蓝色:
```c++
#include <QPushButton>
#include <QPainter>
class MyButton : public QPushButton
{
public:
MyButton(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
private:
QColor m_color;
};
MyButton::MyButton(QWidget *parent)
: QPushButton(parent)
{
m_color = QColor(Qt::red);
}
void MyButton::paintEvent(QPaintEvent *event)
{
QPushButton::paintEvent(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
if (m_color.isValid()) {
painter.fillRect(rect(), m_color);
}
}
void MyButton::mousePressEvent(QMouseEvent *event)
{
m_color = QColor(Qt::blue);
update(); // 强制重新绘制按钮
QPushButton::mousePressEvent(event);
}
```
在上面的代码中,我们重写了QPushButton的paintEvent函数。在该函数中,我们首先调用了QPushButton的paintEvent函数,以确保按钮的默认绘制被执行。然后我们使用QPainter在按钮的矩形区域内填充了一个颜色。这里的颜色是一个成员变量m_color,它的初始值为红色。
当按钮被点击时,我们将m_color的值改为蓝色,并调用了update函数,强制重新绘制按钮。这样,按钮的背景色就从红色变为蓝色了。
阅读全文