繁体   English   中英

调用Qpainter的方法paint刷新图像并更改颜色

[英]Calling Qpainter's method paint to refresh image and change color

我创建了一个从QGraphicsObject继承的对象调用Player

我要做的是,当我用鼠标单击播放器时,更改播放器的图像和边界形状的颜色。 问题是我不知道将哪些值发送到player->paint()来更新图像。

我重写了两个纯虚函数,如下所示

在player.h中:

class Player : public QGraphicsObject
{
public:
    Player();
    QRectF boundingRect() const;
    QPainterPath shape() const;
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget);

    void mousePressEvent(QGraphicsSceneMouseEvent *event);
}

在player.cpp中

Player::Player()
{
    QPixmap m_playerPixmap(":/images/images/chevalier/test1.png");
}

QRectF Player::boundingRect() const
{
    return QRectF(-15, 0, 128, 130);
}

QPainterPath Player::shape() const
{
    QPainterPath path;
    path.addEllipse(-15, 70, 100, 60);
    return path;
}

void Player::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget)
{

    QPen linepen;

    linepen.setWidth(5);
    linepen.setColor(Qt::red);

    painter->setPen(linepen);

    painter->drawPath(shape());

    painter->drawPixmap(0, 0, m_playerPixmap);
}

void Player::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    this->paint();
}

非常感谢你的帮助。

您必须调用update()

这将标记要更新的项目,并发出一个paint事件,然后使用正确的参数调用paint

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM