Verzeichnis mit Dateimanager öffnen

Verschiedenes zu Qt
Antworten
TheQuestion
Beiträge: 10
Registriert: 7. Juni 2010 18:53
Kontaktdaten:

Verzeichnis mit Dateimanager öffnen

Beitrag von TheQuestion »

Ich möchte für ein kleines Übersichtsprogramm über einen Button ein Verzeichnis (ausschließlich) im Windows Explorer anzeigen.
Das Verzeichnis befindet sich auf der selben Ebene der Anwendung, die Pfadangabe muss aber relativ erfolgen.
Was für eine URL benötige ich für soetwas für

Code: Alles auswählen

QDesktopServices::openUrl()
?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

QCoreApplication::applicationDirPath()
TheQuestion
Beiträge: 10
Registriert: 7. Juni 2010 18:53
Kontaktdaten:

Beitrag von TheQuestion »

Damit bekomme ich schonmal den Pfad zurück, in dem sich meine Anwendung befindet.
Wenn ich von dort aus dann den Unterordner "Bilder" mit dem Windows Explorer öffnen möchte, wie mache ich das?

Ich habe versucht:

Code: Alles auswählen

    QUrl url( QCoreApplication::applicationDirPath()+"Musik" );
    QDesktopServices::openUrl( url );
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

TheQuestion hat geschrieben:Ich habe versucht:

Code: Alles auswählen

    QUrl url( QCoreApplication::applicationDirPath()+"Musik" );
    QDesktopServices::openUrl( url );
Schön dass du es versucht hast :P
Aber deinem Post entnehme ich dass irgend etwas noch nicht funktioniert. Wäre schön wenn du uns verrätst woran es hapert. Ich Glaskugle mal, dass dir einfach der "/" zwischen applicationDirPath und Musik fehlt.
TheQuestion
Beiträge: 10
Registriert: 7. Juni 2010 18:53
Kontaktdaten:

Beitrag von TheQuestion »

franzf hat geschrieben:[...]Aber deinem Post entnehme ich dass irgend etwas noch nicht funktioniert. Wäre schön wenn du uns verrätst woran es hapert. Ich Glaskugle mal, dass dir einfach der "/" zwischen applicationDirPath und Musik fehlt.
Das ist richtig, der Fehlte. Ich habe beides probiert (dreht sich ja nur um Windows), "\" (\ Escaped) und "/".
Es passiert aber beide Male einfach nichts, was zu beobachten ist. Kein Output, nicht auf der Konsole (Qt Creator, "Ausgabe der Anwendung").
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

TheQuestion hat geschrieben:Das ist richtig, der Fehlte. Ich habe beides probiert (dreht sich ja nur um Windows), "\" (\ Escaped) und "/".
Es passiert aber beide Male einfach nichts, was zu beobachten ist. Kein Output, nicht auf der Konsole (Qt Creator, "Ausgabe der Anwendung").
Heißt das es geht immer noch nicht? Kannst du mal den ganzen Code posten? Vllt. auch mal den Pfad zusammensetzen, mit QDir::exists() auf Existenz prüfen, und dann erst an openUrl übergeben?
TheQuestion
Beiträge: 10
Registriert: 7. Juni 2010 18:53
Kontaktdaten:

Beitrag von TheQuestion »

Der Code für den Button:

Code: Alles auswählen

void mf2010cd::on_pushButton_2_clicked()
{
    QUrl url( QCoreApplication::applicationDirPath()+"/Musik" );
    QDesktopServices::openUrl( url );

}
Sollte das auch bei Windows funktionieren?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

TheQuestion hat geschrieben:Sollte das auch bei Windows funktionieren?
Keine Ahnung, ich hab kein Windows. Aber laut Doku sollte es gehen:
http://doc.trolltech.com/4.6/qdir.html#separator
Hast du es denn probiert?
Kann es sein dass das Problem wo anders liegt, z.B. dass du gar nicht in den SLOT kommst, weil das connect falsch ist oder sonst ein Spaß?
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

du musst fuer die url wohl ein "file:///" vor dem pfad angeben.
folgendes beispiel funktioniert bei mir (win xp, Qt 4.6.2):

Code: Alles auswählen

QDir dir(QApplication::applicationDirPath());
dir.cd("Musik");
QDesktopServices::openUrl(QUrl(QString("file:///%1").arg(dir.absolutePath()), QUrl::TolerantMode));
mfg,
julian
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

-=Freaky=- hat geschrieben:du musst fuer die url wohl ein "file:///" vor dem pfad angeben
Aber nicht so wie Du es machst... siehe QUrl-Doku und man findet QUrl::fromLocalFile()
Wenn man eine url benutzt sollte man sie auch korrekt erstellen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

ok, da magst du wohl recht haben. danke fuer den hinweis.

ich hab mich hier ziemlich an der doku orientiert, die es so macht, wie ich: http://doc.trolltech.com/4.6/qdesktopse ... ml#openUrl

mfg,
julian
TheQuestion
Beiträge: 10
Registriert: 7. Juni 2010 18:53
Kontaktdaten:

SOLVED

Beitrag von TheQuestion »

Problem gelößt, es funktioniert einfach folgendermaßen (auch unter Windows):

Code: Alles auswählen

    QUrl url( "file:///"+QCoreApplication::applicationDirPath()+"/Bilder" );
    QDesktopServices::openUrl( url );
Antworten