crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Вывод QMessageBox до определенного события, Событие - выбор верного файла в диалоге getOpenFileName.
Andrewshkovskii
  опции профиля:
сообщение 10.3.2009, 21:58
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


есть сообщение с варнингом , вот такое :
        dbReadErrorAbortButton->setText("Отмена");
        dbReadErrorOpenDialogButton->setText("Обзор..");
        dbReadError->setText("Произошла ошибка при чтении базы данных цветов. Файл базы не найден.");
        dbReadError->setInformativeText("Укажите путь к файлу,в противном случае нажмите \"Отмена\".");
        dbReadError->setIcon(QMessageBox::Critical);
        dbReadError->setWindowTitle("Ошибка открытия файла");
        dbReadError->addButton(dbReadErrorOpenDialogButton,QMessageBox::AcceptRole);
        dbReadError->addButton(dbReadErrorAbortButton,QMessageBox::DestructiveRole);


Как видно, 2 кнопочки : Отмена и Обзор...

при нажатии Обзор, открывает getOpenFileName :
void Test1Widget::openDBFile(){//это слот, вызывает по нажатию кнопочки "Обзор.."

   *dbPath=QFileDialog::getOpenFileName(this,"Выберите базу данных цветов","/home","Текстовые документы (*.txt)");
//   if(dbPath->isEmpty())

}



Теперь вопрос : как реализовать такой интерфейс, при котором данное QMessageBox будет выводиться до тех пор, пока не будет выбран существующий файл(т.е !dbPath->isEmpty()).
У меня пока что одно решение -
if(dbPath->isEmpty())
  //тут вызвать слот openDBFile()

Но это выглядит костылем..подскажите более верное/правильное/рациональное решение..:)
Т.е - если пользователя в окне выбора файла нажимает отмена, QMessageBox не изчезало.

Сообщение отредактировал Andrewshkovskii - 10.3.2009, 22:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 10.3.2009, 22:36
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата(Andrewshkovskii @ 10.3.2009, 21:58) *
Т.е - если пользователя в окне выбора файла нажимает отмена, QMessageBox не изчезало.

зачем отмена вообще тогда нужна?
может без неё лучше?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 10.3.2009, 22:37
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


Ну фактически нет - а если пользователь захочет закрыть приложение?тогда что?:)
Может ты немножко не так понял.
Цитата
Т.е - если пользователя в окне выбора файла нажимает отмена, QMessageBox не изчезало.

Это кнопочка в диалоге выбора файла, а не в самом QMessageBox

Сообщение отредактировал Andrewshkovskii - 10.3.2009, 22:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 11.3.2009, 7:22
Сообщение #4


Жаждущий знаний
***

Группа: Участник
Сообщений: 254
Регистрация: 1.1.2009
Из: Санкт-Петербург
Пользователь №: 474

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




Репутация:   3  


while(dbPath->isEmpty()) ???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 12.3.2009, 20:50
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


так будет постоянно висеть диалог выбора файла, и никуда от него тогда не денишься, т.е., что бы программу завершить - ctrl+alt+del.

Сообщение отредактировал Andrewshkovskii - 12.3.2009, 20:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 16.1.2021, 17:39