我正在创建自己的wxDialog子类,并且在用作无模式对话框时效果很好,如下所示:
AddDialog newAddDialog = new AddDialog(this, wxID_ANY, _T("Dialog Title"), wxDefaultPosition, wxDefaultSize, 0);
if (newAddDialog.ShowModal() == wxID_OK)
{
//do something
}
使用ShowModal()时,程序的流程将停止,直到按OK或Cancel为止。我需要显示对话框,但不停止GUI的流程,因此我尝试了以下操作:
AddDialog newAddDialog = new AddDialog(this, wxID_ANY, _T("Dialog Title"), wxDefaultPosition, wxDefaultSize, 0);
if (newAddDialog.Showl() == wxID_OK)
{
//do something
}
使用Show()时,对话框短暂显示,然后消失。我认为这可能是范围问题,所以我为newAddDialog使用了一个指针。然后,出现对话框,当我单击“确定”或“取消”时,对话框关闭,但是即使单击“确定”,if语句代码也不会执行。
有人知道如何进行吗?谢谢。
进一步澄清:
我在另一个子类中覆盖的Dialog子类中有虚虚函数。我在覆盖时似乎无法使事件正常工作,但是,如果实际的Dialog子类中有一个空白,则会得到事件调用。这似乎是一个主要问题,但我不知道会有什么问题。这不是我在OnInit()调用中调用的主要GUI-可能是个问题吗?
最佳答案
ShowModal
阻止程序执行并返回结果(如wxID_OK)。另一方面,Show
仅显示对话框并立即返回,因此您无法从返回值中检查结果(用户按下按钮时的结果)。相反,您必须通过发送伴随对话框之类的事件或类似的东西来传达对话框的结果。
关于c++ - wxWidgets-无模式wxDialog,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13961292/