下面是部分代码:
class Picture:public QGraphicsItem
{
public:
Picture(const QPixmap& pixmap,int x,int y,QGraphicsItem * parent = 0);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
QPainterPath shape() const;
QRectF boundingRect()const;
private:
QPixmap m_pixmap;
int pos_x;
int pos_y;
};
void Picture::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QPixmap pixmap(":/qt4logobak.png");
if(option->state & QStyle::State_MouseOver)
{
qDebug() << "in selected" <<endl;
painter->drawPixmap(pos_x,pos_y,pixmap);
}
else
{
qDebug() << "un selected" <<endl;
painter->drawPixmap(pos_x,pos_y,m_pixmap);
}
}
运行起来后,实际情况是在mouse over情况下option->state的值不对。
另外,想在paint里面换张图片,drawpixmap不起作用,请教各位了。