在这个例子中,内部变量m_color的值一直是
没有变的。但它的turnoff,turnon函数和painter.setBrush(m_color)是怎样改变LightWidget的
颜色的呢?
#include <QtGui>
//! [0]
class LightWidget : public QWidget
{
Q_OBJECT
Q_PROPERTY(bool on READ isOn WRITE setOn)
public:
LightWidget(const QColor &color, QWidget *parent = 0)
: QWidget(parent), m_color(color), m_on(false) {}
bool isOn() const
{ return m_on; }
void setOn(bool on)
{
if (on == m_on)
return;
m_on = on;
update();
}
public slots:
void turnOff() { setOn(false); }
void turnOn() { setOn(true); }
protected:
virtual void paintEvent(QPaintEvent *)
{
if (!m_on)
return;
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(m_color);
painter.drawEllipse(0, 0, width(), height());
}
private:
QColor m_color;
bool m_on;
};
[ 此帖被alexltr在2011-01-09 15:34重新编辑 ]