//Активация диалогового окна по кнопке мыши на главном виджетеvoid TimeValuePanel::mousePressEvent(QMouseEvent *event){ if(!pSetPeriod){ pSetPeriod = new SetPeriod(dtList.first(),dtList.last(),this); } if(pSetPeriod->exec()==QDialog::Accepted); { calcNewTimeList(m_dt1,m_dt2); }}//Обработка нажатия кнопки Ок в диалоговом окне, проверка введенных данныхvoid SetPeriod::on_buttonBox_accepted(){ //Проверка введенных данных if(ui->dTimeBeg->dateTime()<m_dt1) { MesBoxErr("Начальная дата выходит за границы общего периода"); ui->dTimeBeg->setFocus(); //Здесь хочу предотвратить закрытие окна, но QDialog::DialogCode //принимает только два значения Accepted и Rejected //в обоих случаях окно закрывается. Где и какой флаг //надо установить, чтобы окно не закрывалось? }}
Конструктор:okButton = new QPushButton("OK", this);okButton->setDefault(true);QObject::connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));cancelButton = new QPushButton("Cancel", this);QObject::connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));void Widget::accept() { if (...) { // Если некорректные данные return; } else { QDialog::accept(); }}