C++ 关闭父项以显式调用Hide或close时Messagebox未关闭

C++ 关闭父项以显式调用Hide或close时Messagebox未关闭,c++,qt,qt4,qt5,qmessagebox,C++,Qt,Qt4,Qt5,Qmessagebox,我将QMessageBox作为小部件类的成员 如果messagebox保持打开状态,并且通过程序关闭widget,则messagebox不会关闭。我也为消息框设置了家长 // Code local to a function reply = m_warningMsg.question(this,"Warning","Do you really want to close the connection",QMessageBox::Yes | QMessageBox::No); if(reply =

我将QMessageBox作为小部件类的成员 如果messagebox保持打开状态,并且通过程序关闭widget,则messagebox不会关闭。我也为消息框设置了家长

// Code local to a function
reply = m_warningMsg.question(this,"Warning","Do you really want to close the connection",QMessageBox::Yes | QMessageBox::No);
if(reply == QMessageBox::No)
{
    return;
}

//Function to close the widget
void Window::closeConnection()
{
    m_warningMsg.setParent(this);
    m_warningMsg.setVisible(true);

    // Code inside if executed but not hiding messagebox
    if(m_warningMsg.isVisible())
    {
        m_warningMsg.close();
        m_warningMsg.hide();
    }
    close();
}
是一种静态方法,因此
m_warningMsg
不是显示的
QMessageBox
,因为您已将其作为一个参数作为父项传递给它,因此我们可以使用以下方法找到
QMessageBox
(注意,不必使用
m_warningMsg
):


void窗口::closeConnection()
{
QMessageBox*mbox=findChild();
如果(mbox)
mbox->close();
close();
}
是一种静态方法,因此
m_warningMsg
不是显示的
QMessageBox
,因为您已将其作为一个参数作为父项传递给它,因此我们可以通过以下方式找到
QMessageBox
(注意,不必使用
m_warningMsg
):


void窗口::closeConnection()
{
QMessageBox*mbox=findChild();
如果(mbox)
mbox->close();
close();
}

如果消息框仍然询问需要用户回答的问题,为什么要关闭小部件?后台小部件正在执行某些活动,如果用户忘记提供任何输入,则活动将继续,并且两者都应关闭。如果消息框仍然问到需要用户回答的问题,为什么要关闭小部件?后台小部件正在运行进行一些活动,如果用户忘记提供任何输入,活动将继续进行,两者都应关闭
QMessageBox::StandardButton reply = QMessageBox::question(this,"Warning","Do you really want to close the connection",QMessageBox::Yes | QMessageBox::No);
if(reply == QMessageBox::No)
{
    return;
}
void Window::closeConnection()
{
    QMessageBox *mbox = findChild<QMessageBox*>();
    if(mbox)
        mbox->close();
    close();
}