QMessage :: question(),对话框应该是模式对话框,但不是临时对话框,对话框显示在MainWindow下

时间:2020-07-17 09:32:02

标签: c++ qt

// QMessageBox对话框默认为模式对话框,但该对话框显示在主窗口下

int res = QMessageBox::question(NULL, tr("Question"), tr("Are you sure to delete this rules?"), 
QMessageBox::Yes | QMessageBox::Cancel);
if (QMessageBox::Yes == res)
{
    QStringList result;
    for (int i = selectedrowset.size() - 1; i >= 0; i--)
    {
        //record data
        QTableWidgetItem* item = this->item(selectedrowset.at(i), 0);
        if (item)
        {
            QString text = item->text();
            if (!result.contains(text))
                result.append(text);
        }
        this->removeRow(selectedrowset.at(i));
    }
    emit signal_delete(result);
}

1 个答案:

答案 0 :(得分:3)

QDialog是其父控件的模态,但由于您使用的是 NULL ,因此根本没有父控件。

>

documentation examples所示:

int ret = QMessageBox::warning(this, tr("My Application"),
                               tr("The document has been modified.\n"
                                  "Do you want to save your changes?"),
                               QMessageBox::Save | QMessageBox::Discard
                               | QMessageBox::Cancel,
                               QMessageBox::Save);

将主窗口添加为父窗口(第一个参数),消息框将变为模态。

相关问题