Klick verhindern

Alles rund um die Programmierung mit Qt
Antworten
jona
Beiträge: 37
Registriert: 16. Februar 2005 11:22

Klick verhindern

Beitrag 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!
jaegermeister
Beiträge: 70
Registriert: 11. August 2004 07:44
Wohnort: Bergen auf Rügen
Kontaktdaten:

Beitrag 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
Wie könnten ja wenn wir wollten, aber wie wollen ja nicht.
jona
Beiträge: 37
Registriert: 16. Februar 2005 11:22

Beitrag 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
dilorenzo
Beiträge: 39
Registriert: 14. Februar 2005 13:23
Wohnort: Schwerte

Beitrag 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
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag 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
jona
Beiträge: 37
Registriert: 16. Februar 2005 11:22

Beitrag 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
QMatze
Beiträge: 2
Registriert: 22. Februar 2005 17:40

Beitrag 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]
Antworten