getOpenFileName()
- статическая функция, которая сразу же открывает диалоговое окно «выборщик файлов» и возвращает после того, как пользователь завершит диалог, «существующий файл, выбранный пользователем». Вы можете использовать его, как это (обратите внимание на использование ::
и имя класса QFileDialog
вместо имени объекта):
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open File"),
QString("/home"),
tr("Raw Images (*.nef *.NEF *.dng *.DNG)"));
directory()
не является статичным и возвращает «каталог в настоящее время отображается в диалоговом окне». Эта функция предназначена для вызова, пока диалог по-прежнему открыт, он предназначен для случаев использования, которые не покрываются статическими вызовами.
Что происходит здесь вы экземпляр объекта, называется статической функции на нем (что не влияет на его состояние), а затем называется directory()
, который будет просто отражать исходное состояние объекта, который вероятно, является рабочим каталогом. Вместо этого вам нужно сохранить возвращаемое значение вызова getOpenFileName()
в переменной, как показано выше.
Если вы хотите попросить пользователя просто выбрать каталог, вы можете вместо этого использовать getExistingDirectory()
. Кроме того, если вы хотите извлечь каталог из имени файла, класс QDir
имеет некоторые полезные для этого функции.
Хм, следовало бы ознакомиться с документами ближе. «Возвращает каталог, отображаемый в данный момент в диалоговом окне». Странно, что он возвращает каталог, на который я никогда не смотрел. – regomodo