2016-12-13 9 views
0

Я хочу, чтобы пользователь выбрал папку, чтобы я мог отображать и сортировать ее содержимое где-то еще. Лучший способ сделать это, кажется, использует QFileDialog. Вот фрагмент кода, я использую:QFileDialog в C++: «нет подходящей функции для вызова»

> #include <QFileDialog> 
..... 
void someEvent(){ 
QString path = QFileDialog::getExistingDirectoryUrl(this, tr("Choose a Folder"), QDir::home()); 
} 

Когда я пытаюсь скомпилировать это я получаю сообщение об ошибке:
нет функции соответствия для вызова QFileDialog::getExistingDirectoryUrl(MainWindow*, QString, QDir) path = QFileDialog::getExistingDirectoryUrl(this, tr("Choose a Folder"), QDir::home());

Примечание: Я бегу Fedora 25 на этом ПК, и мне интересно, может ли это быть проблемой?

+1

Третий параметр должен быть 'QUrl' (в соответствии с [docs] (http://doc.qt.io/qt-5/qfiledialog.html#getExistingDirectoryUrl)), но вы передаете 'QDir' – UnholySheep

+4

Возможно, вы хотели использовать [' getExisti ngDirectory'] (http://doc.qt.io/qt-5/qfiledialog.html#getExistingDirectory) с 'QDir :: home(). path()' в качестве третьего параметра? – UnholySheep

+2

Или 'QDir :: homePath()' http://doc.qt.io/qt-4.8/qdir.html#homePath – drescherjm

ответ

0

У вас есть 2 варианта в зависимости от ваших потребностей, первый из которых является лучшим:

getExistingDirectory:

QString path = QFileDialog::getExistingDirectory(this,tr("Choose a Folder"),QDir::homePath()); 

getExistingDirectoryUrl:

QUrl url = QFileDialog::getExistingDirectoryUrl(this,tr("Choose a Folder"),QUrl(QDir::homePath())); 
QString path = url.toString();