Hallo an alle. Ich hab' hier mal wieder eine kleines Prob. Hab' hierzu auch noch nix passendes im Forum gefunden.
Ich rufe über QProcess eine externe Anwendung auf welche ein paar Dateikonvertierungen durchführt. Die Lauftzeit dieser Konvertierung ist stark schwankend (bis zu 30 Sek.). Nun möchte ich an diesen QProcess ein QProgressDialog binden.
Wie geht das am sinnvollsten? Leider bekomme ich keine steps aus der externen Anwendung zurück an welchen ich den Fortschritt der Konvertierung festmachen kann.
Jemand eine Idee ?
THX for help.
QProgressDialog an QProcess binden
Sowas in der Richtung habe ich auch schon erwogen.
Aber eigentlich habe ich auf so eine Windoze Lösung gehofft. Da stimmen die Zeiten beim Kopieren und/oder Runterladen ja auch nur bedingt bis gar nicht mit der Realität überein. Aber der User hat was über das er sich aufregen kann.
Als "Bretterbudenlösung" hab ich zwei QMessageboxen genommen. Eine am Anfang und eine am Ende der externe App. Sieht belämmert aus, aber geht noch.
Die Endlosanimation ist sicher hübsch aber Zeitaufwändig.
Trozdem würde mich mal eine elegante Lösung interessieren, wie man einen QProcess mit einem QProgressDialog verbindet (unter der Annahme das die externe Anwendung ein paar steps rausgibt).
Wäre doch auch mal interessant sich Entwicklungsrichtlinien zu überlegen, damit externe Applikationen einen Fortschritt an andere Programme melden. So eine Art permanetes emittieren eines Signals.
Aber eigentlich habe ich auf so eine Windoze Lösung gehofft. Da stimmen die Zeiten beim Kopieren und/oder Runterladen ja auch nur bedingt bis gar nicht mit der Realität überein. Aber der User hat was über das er sich aufregen kann.
Als "Bretterbudenlösung" hab ich zwei QMessageboxen genommen. Eine am Anfang und eine am Ende der externe App. Sieht belämmert aus, aber geht noch.
Die Endlosanimation ist sicher hübsch aber Zeitaufwändig.
Trozdem würde mich mal eine elegante Lösung interessieren, wie man einen QProcess mit einem QProgressDialog verbindet (unter der Annahme das die externe Anwendung ein paar steps rausgibt).
Wäre doch auch mal interessant sich Entwicklungsrichtlinien zu überlegen, damit externe Applikationen einen Fortschritt an andere Programme melden. So eine Art permanetes emittieren eines Signals.
Da sind die zu übertragenden Daten auch bekannt. Kopieren ist aber kein gleichmäßiger Prozess, deshalb die Zeitdifferenzen.cbrider hat geschrieben:Aber eigentlich habe ich auf so eine Windoze Lösung gehofft. Da stimmen die Zeiten beim Kopieren und/oder Runterladen ja auch nur bedingt bis gar nicht mit der Realität überein. Aber der User hat was über das er sich aufregen kann.
Nimm eine Progressbar und steuer sie über einen Timer. Nach maximal einer Minute sollte das externe Programm fertig sein oder es hängt irgendwo. So könntest Du sicherstellen, das dein Programm nicht auch stehen bleibt, nur weil ein externes Programm Probleme hat.cbrider hat geschrieben:Die Endlosanimation ist sicher hübsch aber Zeitaufwändig.
Elegant ginge nur bei Prozessen, bei den der Ablauf fest definiert ist. Sobald die Anzahl der Schritte aus irgendwelchen Gründen dynamisch ist, bekommst Du ein Problem, bzw. der User hat etwas worüber er sich aufregen kanncbrider hat geschrieben:Trozdem würde mich mal eine elegante Lösung interessieren, wie man einen QProcess mit einem QProgressDialog verbindet (unter der Annahme das die externe Anwendung ein paar steps rausgibt).
Nein, es geht einfach durch Setzen von Minimum und Maximum auf 0:cbrider hat geschrieben:
Die Endlosanimation ist sicher hübsch aber Zeitaufwändig.
Code: Alles auswählen
progressDialog=new QProgressDialog ("TITEL","Abbrechen",
0,0,this,
Qt::MSWindowsFixedSizeDialogHint|Qt::WindowTitleHint);
progressDialog->setAutoClose(TRUE);
progressDialog->show();
