C++ 关闭父项以显式调用Hide或close时Messagebox未关闭
我将QMessageBox作为小部件类的成员 如果messagebox保持打开状态,并且通过程序关闭widget,则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 =
// 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();
}