Seite 1 von 1
Klick verhindern
Verfasst: 16. Februar 2005 11:26
von jona
Hallo!
Ich habe das folgende Problem:
Währenddem ein Prozess läuft, möchte ich verhindern, dass der User klicken kann.
Mit setCursor(waitCursor) wird aber nur die Darstellung des Mauszeigers auf Sanduhr gestellt, klicken kann man trotzdem.
Hat jemand damit Erfahrung und kann mir helfen?!?
Vielen Dank im Voraus!
Verfasst: 16. Februar 2005 13:30
von jaegermeister
Hi
Ich weiß nicht was du für ein Objekt hast auf das nicht geklickt werden darf, aber bei QWidget gibt es blockSignals() oder du fängst das MausEvent ab und machst denn nichts.
Wären jetzt meine Ideen.
mfg jaegermeister
Verfasst: 16. Februar 2005 13:41
von jona
Hallo!
Danke schon mal für deine Antwort!
Ich möchte das Klicken im ganzen Programm verhindern, also Tabs und Menubar, Radiobuttons...
Das blockSignals() gibts für QObjects.
Muss ich das dann für jedes einzelne Objekt machen?
Irgendwie komm ich noch nicht wirklich weiter...
LG
Verfasst: 16. Februar 2005 15:14
von dilorenzo
Hallo jona,
reicht das nicht, wenn du beim MainWidget (z.B. das Fenster in dem sich die Tabs und Menubar, Radiobuttons... befinden) die Eigenschaft enabled auf false setzt?
Ciao,
Dominik
Verfasst: 16. Februar 2005 16:43
von ArneStocker
wenn Du Deinen Prozess innerhalb einer Schleife ausführst funktioniert
folgendes Verfahren
Code: Alles auswählen
do
{
... prozess bearbeiten
qApp->eventLoop()->processEvents(QEventLoop::ExcludeUserInput,300);
]
while (... prozess ist fertig ... )
Allerdings wird ein Klick auf den Close - Button eines Fensters nicht verhindert, so dass Du (für Deinen betreffenden Dialog oder das betreffende Fenster) auf die Close - Nachricht reagieren (herausfiltern) musst.
Gruss Arne
Verfasst: 22. Februar 2005 14:41
von jona
Hallo!
Danke erst mal für die Antworten!
Die Version mit der Schleife würde funktionieren, aber ich bekomme so auch die anderen Signale der Applikation nicht mehr.
Mmh, das geht irgendwie net...
LG
Verfasst: 22. Februar 2005 17:55
von QMatze
Hi,
Du kannst einen eventFilter installieren. Darin kannst Du alle gesendeten Events (QMouseEvents usw.) abfangen.
Bsp:
Code: Alles auswählen
bool PenKey::eventFilter(QObject *o, QEvent *e)
{
if( e->type() == QEvent::MouseButtonPress )
{
// mit Rückgabe von true wird das Signal nicht mehr weitergeleitet
return true;
}
}
Gruß Martin[/code]