Russian Qt Forum
Май 23, 2024, 22:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Диалог выбора файла [решено]  (Прочитано 14239 раз)
Alexu007
Гость
« : Июнь 22, 2014, 16:18 »

    
Код
C++ (Qt)
full_fname = QFileDialog::getOpenFileName(this, tr("Open File"), "" , tr("*"));

Всегда сперва открывает папку, в которой находится ехе-шник. Неудобно - мягко сказано. Как сделать, чтобы после выхода из программы запоминал последнюю открытую папку, и в следующий раз начинал с неё?
« Последнее редактирование: Июнь 24, 2014, 06:55 от Alexu007 » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #1 : Июнь 22, 2014, 16:27 »

Брать путь возвращаемого файла, сохранять, при следующем запуске указывать его в параметре dir этой функции.

QString QFileInfo::absoluteFilePath() const

QString QFileDialog::getOpenFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0) [static]
« Последнее редактирование: Июнь 22, 2014, 16:36 от Old » Записан
Alexu007
Гость
« Ответ #2 : Июнь 22, 2014, 18:43 »

В билдере вроде само сохранялось...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Июнь 22, 2014, 19:08 »

В билдере вроде само сохранялось...
Вряд ли. Диалог показывает текущую для ОС, Qt ее устанавливает, а былдер нет. Впрочем нсли былдер лучше - так назад к нему  Улыбающийся
Записан
Alexu007
Гость
« Ответ #4 : Июнь 23, 2014, 12:55 »

Впрочем нсли былдер лучше - так назад к нему  Улыбающийся
Не, ну так вопрос не стоит... Сохранить предыдущий адрес конечно можно в файле, но добавлять в проект лишний файл как-то неохота. Некоторые программы (необязательно билдер, может с билдером я и ошибся) запоминают предыдущий адрес посещения. Может он в винде где-то хранится?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #5 : Июнь 23, 2014, 12:56 »

Не, ну так вопрос не стоит... Сохранить предыдущий адрес конечно можно в файле, но добавлять в проект лишний файл как-то неохота. Некоторые программы (необязательно билдер, может с билдером я и ошибся) запоминают предыдущий адрес посещения. Может он в винде где-то хранится?
Если речь про венду, то и храните его не в файла, а в реестре. См. QSettings.
Записан
Bepec
Гость
« Ответ #6 : Июнь 23, 2014, 12:58 »

Мб я и совру, но на серверных системах я пару раз замечал, что он ставит последнюю папку автоматически. Хотя не уверен.
Записан
_OLEGator_
Гость
« Ответ #7 : Июнь 23, 2014, 14:21 »

Если вызвать диалог так:
Код
C++ (Qt)
full_fname = QFileDialog::getOpenFileName(this, tr("Open File"), "." , tr("*"));

У меня сохраняется последний открытый путь. Не факт, что он устанавливается для конкретного приложения.
Записан
Bepec
Гость
« Ответ #8 : Июнь 23, 2014, 14:22 »

Кстати да, именно такие параметры и я передаю обычно.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #9 : Июнь 23, 2014, 14:28 »

У меня сохраняется последний открытый путь. Не факт, что он устанавливается для конкретного приложения.
Даже если закрыть программу и открыть вновь? Улыбающийся
А ТС хочет именно этого.
Записан
_OLEGator_
Гость
« Ответ #10 : Июнь 23, 2014, 14:41 »

Даже если закрыть программу и открыть вновь? Улыбающийся
А ТС хочет именно этого.

Именно, после закрытия путь сохраняется, но не факт, что если из другого приложения открыть диалог - путь не изменится.
Записан
Alexu007
Гость
« Ответ #11 : Июнь 23, 2014, 17:11 »

Не, эта точка в кавычках "." чуда не совершила. Каждый раз при вызове "открыть файл" открывается папка с ехешником, даже если и не выходить из программы. Вызов производится при нажатии кнопки:

Код
C++ (Qt)
// нажтие кнопки Open File
// ********************************************************************
// ********************************************************************
void Widget::MyEventButton_1()
{
   full_fname = "";
 
   // диалог выбора файла
   full_fname = QFileDialog::getOpenFileName(this, tr("Open File"), "." , tr("*"));
                                                          //"C:/Users/Alexu/Desktop/", tr("*"));
 
   ui->label_1->setText("Fname:  " + full_fname);
 
   return;
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #12 : Июнь 23, 2014, 17:14 »

full_fname = "", return — зачем?..
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Июнь 23, 2014, 17:21 »

Не, эта точка в кавычках "." чуда не совершила. Каждый раз при вызове "открыть файл" открывается папка с ехешником, даже если и не выходить из программы. Вызов производится при нажатии кнопки:
Такое у меня было - правда на совсем др платформе и версии Qt. Решил давая несуществующий путь напр "path does not exist". Но это помогает только если не выходить.
Записан
Alexu007
Гость
« Ответ #14 : Июнь 23, 2014, 17:48 »

full_fname = "", return — зачем?..
full_fname = "" - согласен, лишняя. С return, точнее с его отсутствием, у меня как-то были заморочки, правда в билдере. Я с тех пор везде его ставлю - он же не мешает?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.244 секунд. Запросов: 22.