[英]C++ Event (Focus) Handling
(在BasicPanel中)
Connect(CTRL_ONE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_TWO,wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_THREE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_FOUR, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_FIVE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
(枚舉)
CTRL_NAME = wxID_HIGHEST + 5, // 6004
CTRL_ADDRESS = wxID_HIGHEST + 6, // 6005
CTRL_PHONENUMBER = wxID_HIGHEST + 7, // 6006
CTRL_SS = wxID_HIGHEST + 8, // 6007
CTRL_EMPNUMBER = wxID_HIGHEST + 9 // 6008
(OnKillFocus函數-聲明包含在建議中)
void BasicPanel::OnKillFocus(wxFocusEvent& event) {
switch (event.GetId()) {
case 6004:
...
break;
... ... ...
}
當用戶將焦點轉移到他們正在使用的文本框上時,所有添加到代碼中的內容都將無效。
問題1:我正在使用wxWidgets(C ++),遇到了我找不到任何幫助的問題。 我創建了幾個wxTextCtrl
框,希望程序在用戶“殺死焦點”時更新其中的簡單計算。 我在wxWidgets網頁上找不到關於此主題的任何文檔,並且對其進行谷歌搜索僅調出了wxPython。 我發現的兩個事件是: EVT_COMMAND_KILL_FOCUS - EVT_KILL_FOCUS
,我都找不到這兩個代碼段。 誰能給我一個簡短的例子,或引導我進入一個有用的頁面?
wxTextCtrl
框中的每個框創建一個事件來處理被殺死的焦點?
如果我必須創建另一個事件:如何使每個事件彼此區分開?
我知道我將必須為每個wxTextCtrl
框創建新的wxTextCtrl
,但是如何獲取正確的wxTextCtrl
?
class BasicPanel : public wxPanel { ... wxTextCtrl* one; wxTextCtrl* two; wxTextCtrl* three; wxTextCtrl* four; ... }
好的,首先,這是放在BasicPanel
類中的代碼:
void OnKillFocus(wxFocusEvent& event);
然后將以下內容添加到BasicPanel
構造函數的末尾:
Connect(ID_TEXTCTRL,
wxEVT_KILL_FOCUS ,
(wxObjectEventFunction)&BasicPanel::OnKillFocus);
您將需要為每個文本控件重復以上代碼,並將ID_TEXTCTRL
替換為控件的實際ID。
然后,只要其中一個控件失去焦點,下面的代碼就會被調用。
void BasicPanel::OnKillFocus(wxFocusEvent& event)
{
// code goes here...
}
要確定在OnKillFocus
中生成事件的控件的ID,可以使用以下命令:
event.GetId()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.