QFileDialog::getExistingDirectory ohne "neuer Ordner&qu

Alles rund um die Programmierung mit Qt
Antworten
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

QFileDialog::getExistingDirectory ohne "neuer Ordner&qu

Beitrag von gerome69 »

Hallo zusammen,
kann ich obigen Zusammenhang (unter Windows) diesen Button ("Neuen Ordner erstellen") ausblenden?

Danke für Tips, Bernd
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wozu soll denn diese unnötige Einschränkung schon wieder gut sein?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Da es eine static-Funktion ist - nein.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Beitrag von gerome69 »

Christian81 hat geschrieben:Da es eine static-Funktion ist - nein.
Das habe ich mir schon gedacht.
Aber selbst wenn ich ein QFileDialog-Objekt anlege, finde ich der Doku nichts in der Richtung:
setShowNewFolderButton(false);

B.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Bin mir jetzt auch nicht ganz sicher ob es dafür eine Funktion gibt. Notfalls von QFileDialog ableiten wenn man die Funktion wirklich braucht...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Beitrag von gerome69 »

Christian81 hat geschrieben:Bin mir jetzt auch nicht ganz sicher ob es dafür eine Funktion gibt. Notfalls von QFileDialog ableiten wenn man die Funktion wirklich braucht...
Hmm, wie soll ich eine Klasse davon ableiten, um das Einblenden des "New Folder"-Buttons zu verhindern. Ich habe ja keinen Zugriff auf diesen Button, um etwas wie setVisible(FALSE) zu machen.

Ich hab mal im Quelltext von "qfiledialog_win.cpp" nachgesehen, wie das eigentlich implementiert ist:

Code: Alles auswählen

        BROWSEINFO bi;
        bi.hwndOwner = (parent ? parent->winId() : 0);
        bi.pidlRoot = NULL;
        bi.lpszTitle = (TCHAR*)tTitle.utf16();
        bi.pszDisplayName = initPath;
        bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT | BIF_NEWDIALOGSTYLE;
        bi.lpfn = winGetExistDirCallbackProc;
        bi.lParam = LPARAM(&initDir);
        LPITEMIDLIST pItemIDList = ptrSHBrowseForFolder(&bi);
        if (pItemIDList) {
            ptrSHGetPathFromIDList(pItemIDList, path);
            IMalloc *pMalloc;
            if (SHGetMalloc(&pMalloc) != NOERROR)
                result = QString();
            else {
                pMalloc->Free(pItemIDList);
                pMalloc->Release();
                result = QString::fromUtf16((ushort*)path);
            }
        } else
            result = QString();

Wenn ich das ändern könnte von
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT | BIF_NEWDIALOGSTYLE;
zu
bi.ulFlags = BIF_RETURNONLYFSDIRS;

hätte ich das, was ich möchte. Aber es macht ja nicht wirklich Sinn, dafür die QT-Libs neu zu kompilieren?!

Gruß, Bernd
Antworten