Seite 1 von 1
QFileDialog::getExistingDirectory ohne "neuer Ordner&qu
Verfasst: 6. März 2007 17:04
von gerome69
Hallo zusammen,
kann ich obigen Zusammenhang (unter Windows) diesen Button ("Neuen Ordner erstellen") ausblenden?
Danke für Tips, Bernd
Verfasst: 6. März 2007 17:18
von upsala
Wozu soll denn diese unnötige Einschränkung schon wieder gut sein?
Verfasst: 6. März 2007 17:22
von Christian81
Da es eine static-Funktion ist - nein.
Verfasst: 6. März 2007 17:25
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.
Verfasst: 6. März 2007 17:43
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...
Verfasst: 7. März 2007 19:11
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