Seite 1 von 1

QDesktopService::openUrl Verzögerung [gelöst]

Verfasst: 26. Juli 2011 15:44
von LotB
Tagchen,

ich möchte in meinem Programm mit Hilfe eines Buttons eine Instanz des Windows Explorers aufrufen. Das funktioniert auch mittels

Code: Alles auswählen

QString path = QDir::toNativeSeparators(HOME_PATH);
QDesktopServices::openUrl(QUrl("file:///" + path));
Was mich stört ist, dass es das im ersten Aufruf nur mit einer Verzögerung von ca. 15 sek macht. Bei jedem weiteren Drücken aber instant. Ich habe herausgefunden, dass es daran liegen könnte, dass die Funktion sich erst die richtige Anwendung für die Url heraussucht, sich diese dann aber merkt.

Meine Frage wäre jetzt, ob ich dem DesktopService irgendwie mitteilen kann, welche Anwendung er nehmen soll ( den Windows-Explorer ).
Die Syntax der QDesktopServices::setUrlHandler verstehe ich leider nicht wirklich :(

Danke!

Re: QDesktopService::openUrl Verzögerung

Verfasst: 26. Juli 2011 16:18
von Exasperation
Den Explorer erreicht man auch über den aufruf von "explorer" und als parameter das zielverzeichnis.

Von dem her sollte

Code: Alles auswählen

QProcess:startDetached( "explorer", "c:\pfad\zum\verzeichnis" );
habs aber nicht getestet.

Doku

Re: QDesktopService::openUrl Verzögerung

Verfasst: 26. Juli 2011 21:02
von LotB
Ich bedanke mich für den Hinweis.

Ganz richtig wäre es so gewesen:
void Widget::openExplorer(){
QProcess::startDetached( "explorer C:\\Users\\Appdata\ ");
}
Also das Argument nicht getrennt übergeben sondern zusammen. Und man muss unter Windows aufpassen die Backslashs doppelt zu setzen.
Also wie bei mir für den Pfad C:\Users\Appdata\ -> C:\\Users\\Appdata\

Schönen Abend noch und danke Exasperation