class MyFileDialog : public QFileDialog{..void accept(); // <= virtual..};void MyFileDialog::accept(){ QStringList files = selectedFiles(); // тута ваши файлики.. // если всё так: QDialog::accept(); // если чё не так: QFileDialog::accept();}
class MyFileDialog{public: static QStringList getFilesAndDirectories( ... );};void MyFileDialog::accept(){ QDialog::accept();}QStringList MyFileDialog::getFilesAndDirectories( ... ){ MyFileDialog fd( ... ); fd.exec(); return fd.selectedFiles();}
class FilesDirsDialog:public QFileDialog{ Q_OBJECT; public: FilesDirsDialog(const QString & dirName, const QString & filter = QString::null, QWidget * parent = 0, const char * name = 0, bool modal = FALSE ); static QStringList getFilesAndDirs( const QString & filter = QString::null, const QString & dir = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, QString * selectedFilter = 0, bool resolveSymlinks = TRUE); private slots: virtual void accept();};FilesDirsDialog::FilesDirsDialog(const QString & dirName, const QString & filter, QWidget * parent, const char * name, bool modal ): QFileDialog(dirName, filter, parent, name, modal) {}void FilesDirsDialog::accept(){ QDialog::accept();}QStringList FilesDirsDialog::getFilesAndDirs( const QString & filter, const QString & dir, QWidget * parent, const char * name, const QString & caption, QString * selectedFilter = 0, bool resolveSymlinks){ FilesDirsDialog dlg(dir, filter, parent, name, false); dlg.setCaption(caption); dlg.setSelectedFilter(filter);//без этой строчки вообще ничего не хотело выделяться, и кнопка Ok возвращала пустой список dlg.setMode(QFileDialog::ExistingFiles); dlg.exec(); return dlg.selectedFiles();}
#include <QApplication>#include <QFileDialog>class F : public QFileDialog{public: static QStringList get(); F(); void accept();};F::F() {}void F::accept(){ QDialog::accept();}QStringList F::get(){ F f; f.setFileMode( ExistingFiles ); f.exec(); return f.selectedFiles();}int main( int argc, char ** argv ){ QApplication app( argc, argv ); QStringList sl = F::get(); for ( QStringListIterator it( sl ); it.hasNext(); ) { QString s = it.next(); int y = 0; // <- це для брікпоінту (0: } return 0;}