【问题标题】:How to close a dialog with an OK button using a condition [duplicate]如何使用条件关闭带有确定按钮的对话框[重复]
【发布时间】:2017-11-11 15:38:59
【问题描述】:

My code

我的第一次尝试,所以我可以在 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 时表格单元格为空,则对话框关闭 - 但我希望它关闭。我该如何实现?

【问题讨论】:

  • 您可以重新实现QDialog::accept() 插槽或不将按钮框连接到它。如果你分享你的对话代码,我可以帮你举个例子来说明如何做到这一点。
  • 请写你的代码...
  • 我的代码pastebin.com/aQe7iRDe
  • 这是我打印结果的 mainwindow.cpp
  • void MainWindow::on_actionAdd_train_triggered() { 对话框 e; if(e.exec()) { for(auto City: e.Cities) { ui->textBrowser->append(City.city_+ " " + City.depart_+ " " +City.leave_); } } }

标签: c++ qt qpushbutton qdialog


【解决方案1】:

buttonBox 上按鼠标右键,然后选择Go To Slot...,然后选择accepted() 插槽。

现在将您的条件添加到接受的函数中:

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

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

QDialogButtonBox Class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多