Seite 1 von 1
QDialog/ keine Transparenz über Aufruf mit exec()
Verfasst: 2. Juni 2008 10:23
von QtNoob2008
Hallo Qtler,
habe folgendes Problem:
Ich möchte einen modalen Dialog erstellen der einen
halbtransparenten Hintergrund besitzt (Meine Klasse erbt von QDialog).
Wird der Dialog über
aufgerufen, so funktioniert das Setzen der Transparenz innerhalb des Dialogs
(über eine Palettenveränderung und Zuweisung).
Über
wird der Hintergrund aber schwarz und zudem befindet sich der Dialog außerhalb des Hauptfensters ...
Welche Möglichkeiten existieren den Dialog wieder halbdurchsichtig darzustellen. Die Postionsanpassung läßt sich ja über die Abfrage der Hauptfensterposition realisieren und entsprechend anpassen nehme ich mal an, nur bei der Transparenz haut es nicht so hin. Hab versucht dies als erstes zu lösen.
Wer kann mir helfen und gibt mir nen Tipp?
Gruß QtNoob
Verfasst: 2. Juni 2008 12:16
von close1
Hi,
Du willst den Dialog als Unterfenster von deinem Hauptffenster starten?
exec() schmeißt den Event(signals&slots) handler an, der sich dann in einer Schleife(bis zum schließen oder terminieren usw.) aufhängt.
Mir fallen grade 2 Möglichkeiten ein:
1. Du startest den dialog als eigenes Programm, unschön aber simpel.
oder 2. Du nimmst dir nen QProcess und startest den Dialog als eigenen Prozess.
mhh mir kommt es irgendwie so vor als ob ich grad um die Ecke denken würde ... da war noch irgend eine andere Möglichkeit...
Verfasst: 2. Juni 2008 14:42
von QtNoob2008
ja genau, möchte den modalen Dialog von meinem Hauptfenster starten.
das Hauptfenster soll dann inaktiv sein. Richtig, das mit dem exec() funktioniert auch wunderbar, also dass das Hauptfenster keine Events mehr erhält.
Das Problem mit der Postion habe ich gerade beseitigt, also dass der Dialog sich nicht im Darstellungsbereich des Hauptfensters/ Anwendung befindet. Über die Positionsabfrage mit
Code: Alles auswählen
this->frameGeometry().x() und this->frameGeometry().y()
des Hauptfensters und der Positionsfestlegung des Dialoges funktioniert dies nun...
Zu 1.) Wie mache ich das, habe ich noch nicht gemacht
Zu 2.) Ist ein eigener Prozess nicht in dem Sinne ein eigenes Programm ??
Verfasst: 2. Juni 2008 15:00
von close1
QtNoob2008 hat geschrieben:ja genau, möchte den modalen Dialog von meinem Hauptfenster starten.
das Hauptfenster soll dann inaktiv sein. Richtig, das mit dem exec() funktioniert auch wunderbar, also dass das Hauptfenster keine Events mehr erhält.
Das Problem mit der Postion habe ich gerade beseitigt, also dass der Dialog sich nicht im Darstellungsbereich des Hauptfensters/ Anwendung befindet. Über die Positionsabfrage mit
Code: Alles auswählen
this->frameGeometry().x() und this->frameGeometry().y()
des Hauptfensters und der Positionsfestlegung des Dialoges funktioniert dies nun...
Zu 1.) Wie mache ich das, habe ich noch nicht gemacht
Zu 2.) Ist ein eigener Prozess nicht in dem Sinne ein eigenes Programm ??
Zu 1. naja du schreibst ein Programm das den Dialog enthält. Und je nach Parametern was anderes macht(oder so). Dann rufst du das ganze mit Parametern auf. Und wertest die rückgabe des Programms aus, oder so etwas in der Richtung
Zu 2. nicht ganz, bei Qt ist das so, dass ein Vorgang(eine schleife etc.) einem anderem Prozess zugeordnet wird damit das interface noch reagiert während die Schleife läuft..
Verfasst: 2. Juni 2008 15:18
von QtNoob2008
Zu 1.) Ok, ich glaube das scheidet aber doch aus, weil ich nicht abschätzen kann, ob das verhalten (Geschwindkeit etc.) so ist wie es sein soll.
Zu 2.) Werde mir mal die Klasse QProcess mal ansehen!
Vielen Dank für die Hilfe
Gruß QtNoob2008