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

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

Страниц: [1] 2 3 ... 5   Вниз
  Печать  
Автор Тема: QFileDialog если файл не выбран[РЕШЕНО]  (Прочитано 29191 раз)
Zeka13
Гость
« : Март 11, 2012, 11:31 »

Заранее спасибо за внимание!
Никак не могу разобраться, как полностью закрыть окно, если в созданном в нём диалоге выбора файла, файл окажется не выбран!
Смог только вот что родить:
Код:
QString str = QFileDialog::getOpenFileName(0, "Open Dialog", "", "*.plot");
if(!str.isEmpty())
      //close();
« Последнее редактирование: Март 14, 2012, 13:33 от Zeka13 » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Март 11, 2012, 12:59 »

Код
C++ (Qt)
QString str = QFileDialog::getOpenFileName(0, "Open Dialog", "", "*.plot");
if(str.isEmpty())
     close(); // или qApp->quit()
Записан

Изучением 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
Zeka13
Гость
« Ответ #2 : Март 11, 2012, 13:24 »

 close(); точно не работает почему-то
qApp чем является?
Записан
sudo
Гость
« Ответ #3 : Март 11, 2012, 13:46 »

close(); точно не работает почему-то
qApp чем является?

qApp - объект QAppliaction. В этом случае его использовать не стоит, qApp->quit() грохнет приложение
Чтобы закрыть диалог, можно вызвать reject(), будет равносильно нажатию пользователем кнопки Отмена
Или же accept(), тогда результатом работы диалога будет Accepted
Или done(int), в который любой код можно положить
« Последнее редактирование: Март 11, 2012, 13:48 от sudo » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Март 11, 2012, 13:50 »

Zeka13:
а как ты можешь вообще не выбрать файл и выйти из QFileDialog::getOpenFileName() Непонимающий

kambala, sudo:
ТС использует статический метод и не имеет указателя на диалог. Про какой close() и reject() может идти речь Непонимающий
« Последнее редактирование: Март 11, 2012, 13:52 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
sudo
Гость
« Ответ #5 : Март 11, 2012, 14:08 »

kambala, sudo:
ТС использует статический метод и не имеет указателя на диалог. Про какой close() и reject() может идти речь Непонимающий

Я так понял, у него открыт диалог, поверх которого открывается QFileDialog. Вот тот самый диалог и надо грохнуть
Записан
Zeka13
Гость
« Ответ #6 : Март 11, 2012, 14:18 »

Цитировать
а как ты можешь вообще не выбрать файл и выйти из QFileDialog::getOpenFileName()

нажать отмена я могу в диалоге выбора файла.

Мне нужно закрыть форму, из которой я вызвал диалог!
Записан
sudo
Гость
« Ответ #7 : Март 11, 2012, 14:20 »

нажать отмена я могу в диалоге выбора файла.

Мне нужно закрыть форму, из которой я вызвал диалог!

Форма в каком виде? Это диалог, отдельно висящий виджет, MainWindow, виджет с родителем?
Записан
Zeka13
Гость
« Ответ #8 : Март 11, 2012, 14:35 »

QMainWindow
Записан
sudo
Гость
« Ответ #9 : Март 11, 2012, 14:36 »

QMainWindow

Т.е если я правильно понимаю, если не выбран файл, нужно грохнуть приложение?
Тогда qApp->quit()
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #10 : Март 11, 2012, 14:44 »

Мне нужно закрыть форму, из которой я вызвал диалог!
Причём здесь тогда вообще QFileDialog Непонимающий
Постановка вопроса просто убийственная.
Записан

Qt 5.11/4.8.7 (X11/Win)
sudo
Гость
« Ответ #11 : Март 11, 2012, 14:54 »

Ы. А close() будет работать, если добавить вот такую строчку в main

Код
C++ (Qt)
app.setQuitOnLastWindowClosed(true);
 

где app - объект QApplication. Если, конечно, не будут открыты другие окна приложения в этот момент
Записан
Zeka13
Гость
« Ответ #12 : Март 11, 2012, 16:35 »

Ещё раз
есть главное окно(A), из него открыть можно другое окно(B), в это другом окне(B) создаётся диалог выбора файла и если файл не выбран, то должно закрыться окно B
Записан
sudo
Гость
« Ответ #13 : Март 11, 2012, 17:11 »

Тогда на второй круг идём Веселый
Если диалог, то accept/reject, если виджет, то close должен работать
Записан
Zeka13
Гость
« Ответ #14 : Март 11, 2012, 17:30 »

../plot2.8/plot.cpp:50:16: ошибка: нет декларации «accept» в этой области видимости
Записан
Страниц: [1] 2 3 ... 5   Вверх
  Печать  
 
Перейти в:  


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