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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как запретить QFileDialog обращаться к флопику при открытии окна?  (Прочитано 6920 раз)
AlekseyDL
Гость
« : Август 04, 2013, 14:58 »

Здравствуйте.
Помогите, пожалуйста, решить вопрос. При открытии диалога QFileDialog, сначала идет обращение к флопику, а затем открывается окно диалога. Из-за этого каждый раз имеем задержку в несколько секунд с подвисшим окном во время попытки чтения FDD.
Код:
Код:
QDir curDir;
QString criPath = curDir.absolutePath();
criPath += "/base";
QFileDialog dialog(this);
connect(&dialog, SIGNAL(fileSelected(const QString &)), this, SLOT(saveCritFile(const QString &)));
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(criPath);
dialog.setNameFilter(tr("*.cri"));
dialog.exec();
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Август 04, 2013, 17:54 »

если чтение с дискеты выполняется в конструкторе диалога, например выполняй чтение после появления диалога:
Код
C++ (Qt)
QTimer::singleShot(0, this, SLOT(readFloppy()));
и можно показать какой-нибудь индикатор прогресса
Записан

Изучением 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
AlekseyDL
Гость
« Ответ #2 : Август 04, 2013, 18:04 »

если чтение с дискеты выполняется в конструкторе диалога, например выполняй чтение после появления диалога:
Чтение конкретно с дискеты не планируется. Задача: отключить обращение к дисководу при загрузке окна. По поводу конструткора диалога, код приведен полностью - в конструкторе ничего не читается.

++

Попробовал применить вызов другого конструктора:
QDir curDir;
   QString criPath = curDir.absolutePath();
   criPath += "/base";
   QFileDialog dialog(this, "", criPath, "*.cri");
Здесь явно указываю папку откуда открывать: D:/Programms/ ...
Но все равно пробует читать дискету.
« Последнее редактирование: Август 04, 2013, 18:08 от AlekseyDL » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Август 04, 2013, 18:43 »

ааааа, это прикол винды этот… а без создания объекта QDir разве нельзя обойтись? например qApp->applicationDirPath() + "/base"
Записан

Изучением 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
AlekseyDL
Гость
« Ответ #4 : Август 04, 2013, 18:48 »

Немного разобрался. Переписал открытие фалйа по примерам из Qt.
Делаю так, код:
Код:
QDir curDir;
QString openFilesPath = curDir.absolutePath();
//openFilesPath += "/base";
QFileDialog::Options options = QFileDialog::DontUseNativeDialog;
QString selectedFilter;
QStringList files = QFileDialog::getOpenFileNames(this, tr("Open"),openFilesPath,tr("*.cri"),&selectedFilter,options);
//openFilesPath += "/base"; - если эта строка закомментирована, то флопик Не читается. Но при этом я не направляю диалог по нужному пути. Если её раскомментировать, то открывается нужный путь, но и флопик начинает читаться.

ааааа, это прикол винды этот… а без создания объекта QDir разве нельзя обойтись? например qApp->applicationDirPath() + "/base"
Попробую разобраться ).
Записан
AlekseyDL
Гость
« Ответ #5 : Август 04, 2013, 19:02 »

например qApp->applicationDirPath() + "/base"
Тот же прикол. Если пытаюсь открыть файл ниже, чем .exe - происходит обращение к флопику.
Записан
Bepec
Гость
« Ответ #6 : Август 04, 2013, 19:15 »

Правильное поведение винды. Проверяет доступность всех дисков Показает язык
Записан
AlekseyDL
Гость
« Ответ #7 : Август 04, 2013, 19:22 »

Правильное поведение винды. Проверяет доступность всех дисков Показает язык
Должен быть способ отменить проверку. Во многих программах диск не "тревожится" при открытии/записи файлов.
Записан
Majestio
Гость
« Ответ #8 : Август 04, 2013, 20:01 »

Правильное поведение винды. Проверяет доступность всех дисков Показает язык

Но неправильное поведение Qt  Показает язык
Нельзя так жестоко обижать программеров!
Записан
AlekseyDL
Гость
« Ответ #9 : Август 05, 2013, 00:29 »

Люди, никто что ли не использовал QFileDialog в своих проектах и не сталкивался с этим вопросом?
Забыл указать. Версия Qt: 4.8.3
« Последнее редактирование: Август 05, 2013, 00:34 от AlekseyDL » Записан
kamre
Частый гость
***
Offline Offline

Сообщений: 233


Просмотр профиля
« Ответ #10 : Август 05, 2013, 01:48 »

Люди, никто что ли не использовал QFileDialog в своих проектах и не сталкивался с этим вопросом?
Скорее всего никто не пользуется флоппиками, да и cd/dvd уже тоже. Так что это какая-то экзотическая проблема.
Записан
AlekseyDL
Гость
« Ответ #11 : Август 05, 2013, 01:58 »

Люди, никто что ли не использовал QFileDialog в своих проектах и не сталкивался с этим вопросом?
Скорее всего никто не пользуется флоппиками, да и cd/dvd уже тоже. Так что это какая-то экзотическая проблема.
В смысле физически на компе не установлены флопики?
Записан
Bepec
Гость
« Ответ #12 : Август 05, 2013, 07:14 »

Йеп. Именно.
Записан
AlekseyDL
Гость
« Ответ #13 : Август 05, 2013, 12:26 »

Все же разобрался ).
Код:
Код:
QString fileName = QFileDialog::getOpenFileName(this,tr("Open files"), "./base",tr("My files (*.cri)"));
openFile(fileName);
Здесь: "./base" "точки" вначале не хватало. Теперь не нужно загонять путь извне, из-за чего возникали приколы с флопиком.

***
+
В примере используется стандартный диалог.
Если использовать нестандартный (QFileDialog::DontUseNativeDialog) - та же история.
« Последнее редактирование: Август 05, 2013, 13:04 от AlekseyDL » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #14 : Август 06, 2013, 16:28 »

Все же разобрался ).
Код:
Код:
QString fileName = QFileDialog::getOpenFileName(this,tr("Open files"), "./base",tr("My files (*.cri)"));
openFile(fileName);
Здесь: "./base" "точки" вначале не хватало. Теперь не нужно загонять путь извне, из-за чего возникали приколы с флопиком.

***
+
В примере используется стандартный диалог.
Если использовать нестандартный (QFileDialog::DontUseNativeDialog) - та же история.

надо сказать разработчикам калигры - она запарила флопарем стучать...
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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