Как закрыть диалог кнопкой ОК с помощью условия

Мое диалоговое окно

Мой код

моя первая попытка, поэтому я мог получить результат в Mainwindow.cpp, но он может быть // неправильным

void Dialog::on_buttonBox_accepted()
 {
     Cities.clear();
     for(int row = 0; row<ui->tableWidget->rowCount(); row++)
     {
         cities s(get_city(row),get_time(row,3),get_time(row,4));
         Cities.push_back(s);
     }
 }
// my attempt to make another button but I could not get a result in 
//Mainwindow.cpp but could check correctly
void Dialog::on_pushButton_clicked()
{
    if(cities_is_filled())
    {
        Cities.clear();
        for(int row = 0; row<ui->tableWidget->rowCount(); row++)
        {
            cities s(get_city(row),get_time(row,3),get_time(row,4));
            Cities.push_back(s);
        }
    }
}

//GET RESULT
void MainWindow::on_actionAdd_train_triggered()
{
    Dialog e;
    if(e.exec())
    {
       for(auto City: e.Cities)
       {
           ui->textBrowser->append(City.city_+ " " + City.depart_+ " " 
           +City.leave_);
       }
    }
}

Если ячейка таблицы пуста, когда я нажимаю OK, диалоговое окно закрывается, но я бы хотел, чтобы оно не закрывалось. Как я могу реализовать это?


person mark blacksmith    schedule 11.11.2017    source источник
comment
Вы можете либо переопределить слот QDialog::accept(), либо нет. подключение к нему блока кнопок. Если вы поделитесь кодом своего диалога, я мог бы помочь вам с примером того, как это сделать.   -  person scopchanov    schedule 11.11.2017
comment
пожалуйста напишите свой код...   -  person DRPK    schedule 11.11.2017
comment
мой код pastebin.com/aQe7iRDe   -  person mark blacksmith    schedule 11.11.2017
comment
это mainwindow.cpp, где я печатаю результаты   -  person mark blacksmith    schedule 11.11.2017
comment
void MainWindow::on_actionAdd_train_triggered() { Диалог e; if(e.exec()) { for(auto City: e.Cities) { ui-›textBrowser-›append(City.city_+ + City.depart_+ +City.leave_); } } }   -  person mark blacksmith    schedule 11.11.2017
comment
@маркблэксмит. Пожалуйста, отредактируйте свой вопрос и покажите там весь соответствующий код. Очень тяжело читать код в комментариях.   -  person ekhumoro    schedule 11.11.2017


Ответы (1)


Щелкните правой кнопкой мыши на buttonBox, затем выберите Go To Slot..., затем выберите accepted() слот.

введите здесь описание изображения

введите здесь описание изображения

Теперь добавьте свое условие в принятую функцию:

void MainWindow::on_buttonBox_accepted()
{
    if(ui->tableWidget->item(1,2)->text() != "") // for example
    {

    }
    else
    {
        qApp->exit();
    }
}

Класс QDialogButtonBox

person Farhad    schedule 11.11.2017