【发布时间】:2020-07-07 00:18:55
【问题描述】:
也许我的标题不清楚,所以我在这里说一个更准确的解释:
我只是在学习WxWidgets,我现在正在尝试制作两个文件:main.cpp 和Quit.h。 Main.cpp 将包含应用程序的核心,Quit.h 将包含退出对话框的类:Do you really want to quit this application (Yes / No)。
现在这是我的 Quit.h 文件(没有 include 部分):
class Quit : public wxFrame
{
public:
Quit(const wxString& tekst);
};
Quit::Quit(const wxString& tekst)
{
wxMessageDialog* dial = new wxMessageDialog(NULL, _("Do you really want to quit?"), _("Quit"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION);
dial->ShowModal();
}
我在这里卡住了。我试过wxDECLARE_EVENT_TABLE(),但我不知道哪个事件代表这个:“按下 yes 按钮(在 wxYES_NO 按钮系统中)”。我不能说:按下 wxYES_NO 因为这是两个按钮(YES 和 NO)。
那么当按钮 YES 被按下时如何执行该功能呢?
谢谢!
附: 对于这个不清楚的问题,我真的很抱歉,但我希望你能理解。请注意,我只是一个初学者,所以请不要在答案中使用这么多“技术性”词汇和表达方式。我阅读了文档,但它使用了很多技术表达和解释。另外,我读了this 的书。
P.P.S. 您是否注意到现在有很多关于 SE 的问题,而 COVID-19 即将到来?
编辑:当我在制作程序时,我遇到了另一个错误。最小代码:
退出.h
class Quit : public wxFrame
{
public:
Quit(const wxWindow* parent, const wxString& text);
};
Quit::Quit(const wxWindow* parent, const wxString& text)
{
int dialog_return_value = wxNO;
wxMessageDialog* dial = new wxMessageDialog(NULL, text, _("Exit"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION);
dialog_return_value = dial->ShowModal();
switch (dialog_return_value)
{
case wxYES:
Close(true);
break;
case wxNO:
Close(false);
break;
default:
Close(false);
};
}
然后我在 main.cpp 中有这一行:
void MyFrame::CloseWindow(wxCommandEvent& event)
{
Quit* quit = new Quit(this, _("Do you really want to close the App?"));
}
然后它不起作用。我找不到解决方案,所以,如果你有时间,请帮忙。
再次感谢您!
【问题讨论】:
-
通过学习C++框架来学习C++并没有多大意义。请先学习语言,然后再回到关于 wxWidgets 的问题。您使用的代码写得不好(设计),正如第二个答案指出的那样 - 没有多大意义。请学习一些 C++ 课程,了解 C++ 的工作原理和方式,然后尝试用它进行一些编程。
标签: c++ events modal-dialog wxwidgets