QFileDialog, reine Ordnerauswahl
QFileDialog, reine Ordnerauswahl
Hallo,
ich habe einen QFileDialog. Dieser verhällt sich im Prinzip ganz normal bei der Auswahl. Der zu öffnende Ordner wird eben angeklickt. Nun suche ich aber nach einer Möglichkeit, den aktuellen Ordner (also jener Ordner, zu dem der User im Dialog navigiert hat - der Zielordner) aus dem Dialog zu bekommen.
zb:
User möchte nach /home/hallo/
Der Dialog öffnet sich in "/"
er klickt auf home und dann auf hallo. Muss nun aber wieder eine Ebene nach oben um hallo zu markieren. Und letzteres möchte ich eben vermeiden.
ich habe einen QFileDialog. Dieser verhällt sich im Prinzip ganz normal bei der Auswahl. Der zu öffnende Ordner wird eben angeklickt. Nun suche ich aber nach einer Möglichkeit, den aktuellen Ordner (also jener Ordner, zu dem der User im Dialog navigiert hat - der Zielordner) aus dem Dialog zu bekommen.
zb:
User möchte nach /home/hallo/
Der Dialog öffnet sich in "/"
er klickt auf home und dann auf hallo. Muss nun aber wieder eine Ebene nach oben um hallo zu markieren. Und letzteres möchte ich eben vermeiden.
Hallo,
Leider verstehe ich Dein Problem nicht ganz?!
Einen Pfad, bspw. "/home/jana" zum starten des QFileDialog setzt Du mit:
..oder setzt ihn im entsprechenden Constructor (sh. assistant).
Nur Ordner oeffnest Du mit:
Wenn Dein Dialog schon in "/" (Rootverzeichnis) oeffnet, wirst Du kaum noch eine Ebene hoeher gelangen koennen
Leider verstehe ich Dein Problem nicht ganz?!
Einen Pfad, bspw. "/home/jana" zum starten des QFileDialog setzt Du mit:
Code: Alles auswählen
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home/jana",
tr("Images (*.png *.xpm *.jpg)"));
Nur Ordner oeffnest Du mit:
Code: Alles auswählen
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::Directory);
Afaik wird in Qt der Pfad generell mit '/' angegeben, unabhaengig vom System, Du kannst also entsprechende Pfadnamen zusammenbauen und mit ".." auch nach oben navigieren....is set to "AnyFile", meaning that the user can select any file, or even specify a file that doesn't exist. This mode is useful for creating a "Save As" file dialog. Use "ExistingFile" if the user must select an existing file, or "Directory" if only a directory may be selected. See the QFileDialog::FileMode enum for the complete list of modes.
Wenn Dein Dialog schon in "/" (Rootverzeichnis) oeffnet, wirst Du kaum noch eine Ebene hoeher gelangen koennen
-
NoobSaibot
- Beiträge: 99
- Registriert: 27. Januar 2005 15:55
Damit was zurück kommt, muss was ausgewählt worden sein. Es sollte kein Problem sein aus der Rückgabe auf das Parentverzeichnis zu kommen.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
-
NoobSaibot
- Beiträge: 99
- Registriert: 27. Januar 2005 15:55
Mir geht es da wie Fabeltier, ich verstehe das Problem des OP nicht. Wenn ich ein Verzeichnis will, dann benutze ich den entsprechenden Dialog. Wenn ich den Pfad zu einer selektierten Datei will, damit ich ihn beim nächsten Mal gleich anbieten kann, dann komme ich mit QFileInfo da ran. Und wenn der User Abbrechen gewählt hat, dann bleibt alles beim alten.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
-
NoobSaibot
- Beiträge: 99
- Registriert: 27. Januar 2005 15:55
Die Filedialoge, die ich bisher hatte, kann man nur verlassen, wenn man etwas ausgewählt hat. Wenn das anders aussieht, wie z.B. bei WinMerge, dann ist der Filename mit einem Namen vorbelegt, den es wahrscheinlich nicht in dem Verzeichnis gibt. Darauf könnte man dann reagieren.
Will man aber an das aktuelle Verzeichnis kommen, auch wenn der User Abbrechen gewählt hat, dann hilft wohl nur das abfangen des Signals
Will man aber an das aktuelle Verzeichnis kommen, auch wenn der User Abbrechen gewählt hat, dann hilft wohl nur das abfangen des Signals
Code: Alles auswählen
void QFileDialog::directoryEntered ( const QString & directory ) [signal]
This signal is emitted when the user enters a directory.
This function was introduced in Qt 4.3. Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Mal eine Frage zum ähnlichen Thema. Es gibt die Möglichkeit, sowohl einzelne als auch mehrere Dateien gleichzeitig mit dem FileDialog abzufragen, aber für Ordner gibt es nur "getExistingDirectory". Ich bräuchte etwas wie "getExistingDirectories", also äquivalent zu getOpenFileNames (->getOpenFileName). Also, dass man einfach mehrere Ordner auswählen kann und die dann in einer QStringList gespeichert werden, eben wie das bei getOpenFileNames mit Dateien der Fall ist. Hab ich das was übersehen, oder gibts da ne andere Lösung?
hm wieso isn das so schwer zu verstehen?
Beispiel:
Wenn man unter Windows ein Programm installiert, kann man (idR
) den Installationspfad auswählen. Dabei reicht es, wenn ich mich innerhalb des Dialoges im gewünschten Zielordner befinde und "ok" drücke. Ich muss also nicht nochmal eine Ebene höher und den Ordner "markieren", wie es (bei mir zumindest bisher) mit Qt ist. Gewünscht ist aber eben diese "Windows-Variante".
Beispiel:
Wenn man unter Windows ein Programm installiert, kann man (idR