Помогите с такой проблемой.
Есть дилог - потомок QDialog, создан в дизайнере QTCreatorа. В нем переопределен обработчик события closeEvent:
class settlementDialog : public QDialog {
Q_OBJECT
public:
settlementDialog(QWidget *parent = 0, int record_type = RT_ADD, int id = 0);
~settlementDialog();
protected:
void closeEvent(QCloseEvent *e);
...............................
Реализация closeEvent такая:
void settlementDialog::closeEvent(QCloseEvent *e)
{
QMessageBox::warning(this, "", "CloseEvent!", QMessageBox::Yes | QMessageBox::No);
e->ignore();
QDialog::closeEvent(e);
}
Сам диалог показывается таким образом:
settlementDialog *sd = new settlementDialog(this, RT_ADD);
if (sd->exec() == QDialog::Accepted)
{
.....................
}
delete sd;
На диалоге есть buttonBox с кнопками ОК и Отмена. Нужно сделать так, чтобы при нажатии ОК проверялись данные формы, и если они не правильны, выдавалось сообщение и диалог не закрывался. Если нажимается Отмена- диалог закрывается по-любому.
По идее, в приведенном коде диалог не должен закрыться. Но он закрывается. И сообщение "CloseEvent!" вообще никогда не показывается. Почему? В чем ошибка?
Если делать так для MainWindow, все работает прекрасно. Уже второй день мучаюсь