Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: намертво виснет QFileDialog::getSaveFileName
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
Yura
OS linux ubuntu, qt 4.5.2, IDE NetBeans 6.7

есть слот:
Код:

void MainWidget::SlotSaveGraphic() {
    QString str = QFileDialog::getSaveFileName(0, "Сохранить график", "", "Images (*.png *.xpm *.jpg)");
}

слот соединен с кнопкой. При нажатии виснет программа намертво. Наблюдается именно в NetBeans 6.7 под линуксом.
Если компилирую через QDevelop или "ручками" (qmake -project, qmake, make) то всё работает и нечего не виснет... пользователю предлагается ввести имя файла.
Пробовал компилировать в NetBeans 6.7 под виндой - тоже всё отлично работает.
непонятно почему при вызове SlotSaveGraphic() программа виснет именно когда компилирую в среде NetBeans под линуксом
???
kwisp
Yura,
думаю если интересно,
надо код getSaveFileName
в библиотеке.
Yura
Цитата(kwisp @ 29.7.2009, 10:12) *
думаю если интересно,
надо код getSaveFileName
в библиотеке.



не понял тебя
Litkevich Yuriy
Цитата(Yura @ 29.7.2009, 21:18) *
не понял тебя
+1 :)
kwisp
Цитата(Litkevich Yuriy @ 29.7.2009, 18:42) *
+1 :)

-1
что не понятного надо код функции смотреть...
как это я умудрился целое слово пропустить.
Yura
ну вот:


QString QFileDialog::getSaveFileName(QWidget *parent,
                                     const QString &caption,
                                     const QString &dir,
                                     const QString &filter,
                                     QString *selectedFilter,
                                     Options options)
{
    if (qt_filedialog_save_filename_hook)
        return qt_filedialog_save_filename_hook(parent, caption, dir, filter, selectedFilter, options);
    QFileDialogArgs args;
    args.parent = parent;
    args.caption = caption;
    args.directory = QFileDialogPrivate::workingDirectory(dir);
    args.selection = QFileDialogPrivate::initialSelection(dir);
    args.filter = filter;
    args.mode = AnyFile;
    args.options = options;

#if defined(Q_WS_WIN)
    if (qt_use_native_dialogs && !(args.options & DontUseNativeDialog)) {
        return qt_win_get_save_file_name(args, &(args.directory), selectedFilter);
    }
#endif

    // create a qt dialog
    QFileDialog dialog(args);
    dialog.setAcceptMode(AcceptSave);
    if (selectedFilter)
        dialog.selectNameFilter(*selectedFilter);
    if (dialog.exec() == QDialog::Accepted) {
        if (selectedFilter)
            *selectedFilter = dialog.selectedFilter();
        return dialog.selectedFiles().value(0);
    }

    return QString();
}



только что это даст?
Litkevich Yuriy
Цитата(Yura @ 29.7.2009, 2:18) *
При нажатии виснет программа намертво. Наблюдается именно в NetBeans 6.7 под линуксом.
а программу ты запускаешь из файлового мэнеджера или из NetBeans?
kwisp
теперь надо последовательно смотреть что эта функция использует и как это зависит от компилятора. по-просту нужно найти всякие #ifndef #ifdef в функциях использованных в getSaveFileName.
это такое знакомство с исходниками. :)
Litkevich Yuriy
kwisp, NetBeans - это же IDE, а не компилятор.
Как он может учитываться в исходнике Qt?
kwisp
Litkevich Yuriy,
ну к примеру ключик сборки в опциях компилятора, либо версия компилятора, стоит где-нибудь или галочка. я не утверждаю просто предполагаю.это все, если Yurе, верить на слово и разница только в этом.



а вообще, можно еще сайт этой самой IDE посетить, может баг какой есть???
поискать в багах Qt функцию getSaveFileName.
Гость_Yura_*
Всё верно это баг http://www.netbeans.org/issues/show_bug.cgi?id=167660
обновился до версии 6.7.1, проблема исчезла
в версии 6.7 проблема решается так:снять галку в project properties->Profile->Profile On Run.
kwisp
если честно я себе уже хочу на листочке написать и на монитор прибить гвоздем:
"Вася, если что - то не работает, посети прежде всего страницу проекта и багтрекер проекта!"
очень часто такая штуковина происходит.

если бы шеф узнал что я у себя в проге около недели пытался утечки(или нерациональное использование) памяти найти, а на самом деле причина поедания памяти WebKit он бы был очень огорчен....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.