Seite 1 von 1

Maus und QGraphicsView

Verfasst: 12. Februar 2008 09:56
von christiansmac
Hallo,

habe ein Problem mit meinen MouseEvents in der QGraphicsView. Die Items sollen anklickbar sein und können teilweise verschoben werden. Das funktioniert auch manchmal, manchmal leider auch nicht. Woran kann dies liegen?

Nach dem Programmstart funktioniert dies zunächst, nach zirka dreißig Sekunden ohne Mausaktionen, ist keine Verschiebung mehr möglich, da das MousePressEvent nicht aufgerufen wird (mit qDebug()-Ausgabe überprüft).

Hier meine MouseEvents:

Code: Alles auswählen

void ZoomSlider::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
qDebug() << "press";
	bIsMoving = true;
	QGraphicsItem::mousePressEvent(event);
	update();
}

void ZoomSlider::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
	QGraphicsItem::mouseMoveEvent(event);
	update();
}

void ZoomSlider::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
	bIsMoving = false;
	QGraphicsItem::mouseReleaseEvent(event);
	update();
}
Da ich vermute, dass es am Timer liegt auch noch meine Timerfunktion:

Code: Alles auswählen

void RunwayAssignment::timerEvent(QTimerEvent *event)
{
	Q_UNUSED(event);

	bool bItemsMoved = false;
	for (int i=0; i<2; i++)
	{
		if ((iSliderPos[i] != itemSlider[i]->getXPosition()) && (itemSlider[i]->bIsMoving == false))
		{
			iSliderPos[i] = (int)(itemSlider[i]->pos().x());
			itemSlider[i]->setPos(QPointF(iSliderPos[i], iposh[0]+iposh[0]));
			bItemsMoved = true;
		}
	}
	if (bItemsMoved)
	{
		killTimer(timerId);
		timerId = 0;
		
		GetTime();
	}
}