在C++Qt中,可以通过以下步骤来实现点击消息对话框的确定按钮后关闭调用它的窗口:
- 在调用消息对话框的窗口类中,使用QMessageBox::information()函数创建一个信息消息框,并将其保存为成员变量:
class MyWindow : public QWidget {
// ...
private:
QMessageBox* m_msgBox;
}
m_msgBox = new QMessageBox(this);
m_msgBox->setText("确定要关闭窗口吗?");
m_msgBox->setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
m_msgBox->setDefaultButton(QMessageBox::Ok);
- 在连接消息对话框的确定按钮和槽函数的信号时,使用QDialogButtonBox::accepted()信号连接到自定义的槽函数中:
connect(m_msgBox->button(QMessageBox::Ok), SIGNAL(clicked()), this, SLOT(onMsgBoxAccepted()));
- 在自定义的槽函数中关闭调用消息对话框的窗口:
void MyWindow::onMsgBoxAccepted()
{
this->close();
}
完整代码:
#include <QApplication>
#include <QWidget>
#include <QMessageBox>
#include <QPushButton>
class MyWindow : public QWidget
{
public:
MyWindow(QWidget *parent = nullptr) : QWidget(parent)
{
QPushButton* btn = new QPushButton("关闭窗口", this);
connect(btn, SIGNAL(clicked()), this, SLOT(onBtnClicked()));
}
~MyWindow()
{
}
private:
QMessageBox* m_msgBox;
void onBtnClicked()
{
m_msgBox = new QMessageBox(this);
m_msgBox->setText("确定要关闭窗口吗?");
m_msgBox->setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
m_msgBox->setDefaultButton(QMessageBox::Ok);
connect(m_msgBox->button(QMessageBox::Ok), SIGNAL(clicked()), this, SLOT(onMsgBoxAccepted()));
m_msgBox->exec();
}
void onMsgBoxAccepted()
{
this->close();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWindow w;
w.show();
return a.exec();
}