crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Проблемы с функцией QFileDialog::getOpenFileName, при нестабильной работе сети
AD
  опции профиля:
сообщение 22.9.2009, 17:01
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 65 раз(а)




Репутация:   17  


Я когда-то задавал подобный вопрос, приемлемого решения не нашлось на тот момент. Но теперь проблема стала снова и серьезно.

Дело в том, что при использовании функции getOpenFileName в стандартном виде:
QFileDialog::getOpenFileName(<object>, <text>, <directory>,
                        <filter_files>));

То эта функция лезет в сетевое окружение. Если сервер сети в данный момент не работает, то вывод окошка замедляется, а то и совсем зависает. Дело в том, что программа начинают с выбора загружаемых лог-файлов, а соответственно с этого окна. Но если сервера (и основной и резервный) в данный момент недоступны, то прога зависает и это окошко не появляется. Какими флагами, шаманствами и прочим можно заставить эту функцию не лезть в сетевое окружение???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 22.9.2009, 17:13
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 215 раз(а)




Репутация:   34  


При использовании не статического метода exec() должен вызываться Qt'шный диалог выбора файлов, а не системный. Возможно через него повезет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 22.9.2009, 17:14
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 65 раз(а)




Репутация:   17  


Цитата(SABROG @ 22.9.2009, 18:13) *
При использовании не статического метода exec() должен вызываться Qt'шный диалог выбора файлов, а не системный. Возможно через него повезет.

В смысле? Можешь пояснить, пожалуйста?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 22.9.2009, 17:19
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 215 раз(а)




Репутация:   34  


    QFileDialog dlg(this);
    dlg.exec();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 28.9.2009, 14:16
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 65 раз(а)




Репутация:   17  


Сделал для функций следующие обертки. Не особо помогло. Чуть быстрее открывается, но задержка есть. Пока полного зависания не наблюдалось, но задержка раздражает:
QString getOpenFileName(QWidget* parent = 0, const QString& caption = QString(""),
                        const QString& directory = QString(""), const QString& filter = QString(""));
QStringList getOpenFileNames(QWidget* parent = 0, const QString& caption = QString(""),
                        const QString& directory = QString(""), const QString& filter = QString(""));


/// Вызов окна диалога для выбора открываемого файла
QString getOpenFileName(QWidget* parent, const QString& caption, const QString& directory,
                        const QString& filter)
{
    QFileDialog file_dialog(parent, caption, directory, filter);
    file_dialog.setViewMode(QFileDialog::Detail);
    file_dialog.setResolveSymlinks(false);
    file_dialog.setFileMode(QFileDialog::ExistingFile);
    if(!file_dialog.exec())
        return QString("");

    return file_dialog.selectedFile();
}

/// Вызов окна диалога для выбора открываемых файлов
QStringList getOpenFileNames(QWidget* parent, const QString& caption, const QString& directory,
                        const QString& filter)
{
    QFileDialog file_dialog(parent, caption, directory, filter);
    file_dialog.setViewMode(QFileDialog::Detail);
    file_dialog.setResolveSymlinks(false);
    file_dialog.setFileMode(QFileDialog::ExistingFiles);
    if(!file_dialog.exec())
        return QStringList();

    return file_dialog.selectedFiles();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 29.9.2009, 21:14
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 65 раз(а)




Репутация:   17  


Проблема не решена. Очень нужна помощь! У кого-нибудь есть идеи решения? Буду благодарен!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 30.9.2009, 0:02
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 215 раз(а)




Репутация:   34  


Сетевых дисков нет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 30.9.2009, 0:29
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 65 раз(а)




Репутация:   17  


Цитата(SABROG @ 30.9.2009, 1:02) *
Сетевых дисков нет?

Нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 30.9.2009, 17:48
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 65 раз(а)




Репутация:   17  


Думаю, что все-таки есть решение этой проблемы. Ведь не тормозит точно абсолютно такое же окошко, что при вызове статической функции getOpenFileNames(), при открытии нового документа Word, Excel! Только что проверил - моментальное открытие.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 2.10.2009, 16:20
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 65 раз(а)




Репутация:   17  


Не удается найти решение. А просто как воздух необходимо...
Помогите, пожалуйста! Этот стандартный диалог в Word, Excel, Power Point открывается моментально - это ведь значит, что проблему можно вылечить? Уже весь ассистент перелистал в поисках решения...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2017, 14:24