QGraphicsItem hover event kommt zu früh

Alles rund um die Programmierung mit Qt
Antworten
maikelmeyers
Beiträge: 20
Registriert: 16. Mai 2010 17:19

QGraphicsItem hover event kommt zu früh

Beitrag von maikelmeyers »

Hallo,

kann sich einer mal dieses Beispiel anschauen und mir evtl. sagen was ich falsch mache? Ich möchte einfach nur, dass das Objekt rot wird, wenn die Maus darüber ist, aber wenn man sich mit der Maus von links oder oben nähert wird es schon viel früher rot. Ich nutze Qt 4.7.4.
Danke!

Code: Alles auswählen

class myRectItem : public QGraphicsItem
{
public:

  myRectItem(qreal x, qreal y, qreal w, qreal h): m_hovered(false)
  {
	setRect(QRectF(x,y,w,h));
	setAcceptHoverEvents(true);
  }

  virtual QRectF boundingRect() const {return m_rectangle;}
  virtual void paint(QPainter * painter,
         	const QStyleOptionGraphicsItem *, QWidget *)
  {
	QBrush b = QBrush(Qt::green);
	if (m_hovered)
  	b.setColor(Qt::red);

	painter->setBrush(b);
	painter->drawRect(m_rectangle);
  }

  void setRect(const QRectF &rect) {prepareGeometryChange();m_rectangle=rect;}

protected:
  virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*)
	{m_hovered=true;update();}
  virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*)
	{m_hovered=false;update();}

private:
  bool m_hovered;
  QRectF m_rectangle;
};


MainWindow::MainWindow(QWidget *parent)
	: QMainWindow(parent)
{
  QGraphicsScene* scene = new QGraphicsScene(0,0,25,25);
  scene->addItem(new myRectItem(10,10,5,5));
  QGraphicsView* view = new QGraphicsView();
  view->setScene(scene);
  view->scale(32,32);
  setCentralWidget(view);
}
maikelmeyers
Beiträge: 20
Registriert: 16. Mai 2010 17:19

Re: QGraphicsItem hover event kommt zu früh

Beitrag von maikelmeyers »

Hat keiner eine Idee? :(
Ist das evtl. ein Qt Bug?
Antworten