Seite 1 von 1

Mouse von Programm fern halten

Verfasst: 19. November 2008 11:34
von Label
Mahlzeit!

Ich habe ein kleines Problem:
Ich habe ein Programm geschrieben, welches ein paar Displays anzeigt (mit Zeigern die sich drehen usw. :) ). Dieses Programm startet sich auf einem 2. Monitor. Nun zu meinem Problem. Ich möchte das sich der Mauszeiger nicht über mein Programm bewegen kann.
Ich hatte mir erst überlegt ein mouseMoveEvent für jedes Widget zu implementieren, aber da es mehrere Widgets gibt sich teilweise überschneiden usw. ist mir das zu umständlich ... oder besser gesagt: ich hab es ausprobiert, es hat aber nicht richtig funktioniert.
Also jetzt meine Frage:
Weis jemand eine bessere Lösung, um den Mauszeiger von meiner Applikation fern zu halten oder sogar vom ganzen 2. Monitor?

danke für kommende Vorschläge :wink:

Verfasst: 19. November 2008 11:37
von Ginsengelf
Moin, du könntest einen Eventfilter (siehe QObject::installEventFilter ( QObject * filterObj)) für jede Widgetinstanz installieren, der den Mausevent bearbeitet und ggf. die Maus an den Rand der Anwendung setzt.

Ginsengelf

Verfasst: 19. November 2008 12:07
von Label
Danek für die schnelle Antwort!
Ich werde es gleich mal ausprobieren :)

Verfasst: 20. November 2008 07:44
von Hulk2442
DU könntest den Zeiger verstecken!
Zwar ist er eigentlich noch da, doch wenn du ihn über das Programm bewegst, wird er nicht angezeigt!

Nachteil: der Zeiger verschwindet komplett und der Benutzer findet ihn nicht wenn sich dieser gerade auf denselben Koordinaten wie das Programmfenster befindet, deshalb nebenbei vielleicht noch beim MouseMoveEvent eine festgelegte Position außerhalb des Programms festlegen.

Bsp.:

Code: Alles auswählen

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	qApp->setOverrideCursor( QCursor( Qt::BlankCursor ) ); 
	
	//Beim bewegen des Zeigers
	//QCursor::setPos(650, 0);	//neue curser position
	
	QWidget w;
	w.show();
	
	return app.exec();
}

Verfasst: 20. November 2008 20:58
von Label
Danke!
Ich hab es jetzt erstmal so gelöst wie du vorgeschlagen hast. Wie du schon gesagt hast, ist es nicht die allerbeste Lösung aber für den Anfang reicht es.