如何通过其父窗口获取控件的文本值

时间:2018-05-02 20:34:22

标签: c++ wxwidgets

我有以下wxDialog父窗口:

我已通过以下代码创建了该父窗口:

settingsFrm settingsWindow(this, "Settings");
settingsWindow.ShowModal();

我尝试使用FindWindowByName获取第一个文本ctrl的值,如下所示:

wxLogMessage(dynamic_cast<wxTextCtrl*>(settingsWindow->FindWindowByName("keywords_txt"))->GetValue());

但不幸的是,它不起作用并且给我一个运行时错误。 我不知道这种方法是否适合做我想做的事。

如何通过父窗口获取控件的值/其他?

2 个答案:

答案 0 :(得分:0)

从您的评论中,您似乎希望函数从代码中的变量名称中找到控件,而不是它的工作方式,而且几乎不可能。

FindWindowByName()使用窗口名称(并且,作为后备,标签,但这在此无关紧要,因为文本控件无论如何都没有标签),所以为了让你工作需要在创建控件时使用其ctor的相应参数设置窗口名称。然而,这在C ++代码中很少有用,因为在一些变量中只存储一个指向控件的指针并使用它更简单。

但是,从XRC创建控件时,

FindWindowByName()通常很有用。如果这样做,那么您应该在XRC中为控件指定名称,并将相同的名称传递给此函数。

答案 1 :(得分:0)

你是如何创建TextCtrl实例的?您应该拥有类似wxTextCtrl m_textCtrl1 = new wxTextCtrl(/// arguments);的内容。访问该值应该非常简单,因为wxString text = m_textCtrl1->GetValue();您绝对不需要FindWindowByName只是为了您在这里尝试做的事情。