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

Alles rund um die Programmierung mit Qt
Antworten
LotB
Beiträge: 15
Registriert: 4. Mai 2011 18:26

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

Beitrag 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!
Zuletzt geändert von LotB am 26. Juli 2011 21:02, insgesamt 1-mal geändert.
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Re: QDesktopService::openUrl Verzögerung

Beitrag 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
LotB
Beiträge: 15
Registriert: 4. Mai 2011 18:26

Re: QDesktopService::openUrl Verzögerung

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