Seite 1 von 1
Verzeichnis mit Dateimanager öffnen
Verfasst: 8. Juni 2010 17:36
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
?
Verfasst: 8. Juni 2010 17:42
von franzf
QCoreApplication::applicationDirPath()
Verfasst: 8. Juni 2010 20:39
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 );
Verfasst: 8. Juni 2010 20:47
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

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.
Verfasst: 8. Juni 2010 21:00
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").
Verfasst: 8. Juni 2010 21:09
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?
Verfasst: 8. Juni 2010 21:35
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?
Verfasst: 8. Juni 2010 21:40
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ß?
Verfasst: 8. Juni 2010 23:03
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
Verfasst: 9. Juni 2010 06:31
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...
Verfasst: 9. Juni 2010 10:07
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
SOLVED
Verfasst: 9. Juni 2010 18:52
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 );