Maus und QGraphicsView

Alles rund um die Programmierung mit Qt
Antworten
christiansmac
Beiträge: 11
Registriert: 10. Dezember 2007 16:18

Maus und QGraphicsView

Beitrag 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();
	}
}
Antworten