[Qt] MouseEvents&Modifier

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2658
Registriert: 04.08.2004, 20:06
Kontaktdaten:

[Qt] MouseEvents&Modifier

Beitrag von Jonathan »

Ich hab ungefähr folgendes:

Code: Alles auswählen

void RenderWindow::mouseMoveEvent(QMouseEvent* event)
{
	static QPoint LastPos;
	Vector2f MouseDiff=Vector2f((event->pos()-LastPos).x(), (event->pos()-LastPos).y());

	event->modifiers();

	//
	Mrl::Matrix *Mat=NULL;
	if(event->modifiers() && Qt::ShiftModifier)
		Mat=&m_CameraRotation;
	else
		Mat=&m_ModelRotation;

	if(event->buttons() && Qt::LeftButton)
	{
		Mat->RotateMatrix(MouseDiff.x/100.0f, MouseDiff.y/100.0f, 0.f);
	}
	if(event->buttons() && Qt::RightButton)
	{
		Mat->RotateMatrix(0.0f, 0.0f, -MouseDiff.x/100.0f);
	}

	LastPos=event->pos();
	updateGL();
}
Laut Doku sind die buttons Or verknüpfte Flags. Dann sollte das mit dem && doch funktionieren, richtig? Tut es aber leider nicht (es wird immer beides ausgelöst). Wenn ich stattdessen == benutze, funktioniert das mit den buttons (ich kann nur natürlich nicht mehr 2 auf einmal drücken), aber das mit den modifiers() geht einfach nie.
Zuletzt geändert von Jonathan am 01.01.2011, 23:08, insgesamt 1-mal geändert.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
B.G.Michi
Establishment
Beiträge: 163
Registriert: 07.03.2006, 20:38
Alter Benutzername: B.G.Michi
Kontaktdaten:

Re: [Qt] MouseEvents&Modifier

Beitrag von B.G.Michi »

musst du dafür nicht ein bitweises UND verwenden und das wäre dann ein einfaches "&"?
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: [Qt] MouseEvents&Modifier

Beitrag von Aramis »

&& promotet bzw. konvertiert zuerst beide Operanden auf bool. D.h.

Code: Alles auswählen

event.buttons() && Qt::LeftButton
ist aequivalent zu

Code: Alles auswählen

event.buttons()!=0 && Qt::LeftButton!=0
… was immer wahr ergeben duerfte. Wie von B.G.Michi bereits angemerkt, ist ein bitwise AND (&) der richtige Weg.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2658
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Qt] MouseEvents&Modifier

Beitrag von Jonathan »

Argh, kaum benutzt man sowas n Weilchen nicht, weiß man nicht mehr, wie es geht; dankeschön :oops:
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten