Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Вывод QMessageBox до определенного события

Автор: Andrewshkovskii 10.3.2009, 21:58

есть сообщение с варнингом , вот такое :

        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 не изчезало.

Автор: kwisp 10.3.2009, 22:36

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

зачем отмена вообще тогда нужна?
может без неё лучше?

Автор: Andrewshkovskii 10.3.2009, 22:37

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

Цитата
Т.е - если пользователя в окне выбора файла нажимает отмена, QMessageBox не изчезало.

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

Автор: panter_dsd 11.3.2009, 7:22

while(dbPath->isEmpty()) ???

Автор: Andrewshkovskii 12.3.2009, 20:50

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

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)