[英]How do i clear statusbar text wxwidgets c++
void TestFrame::UpdateStatusBar(wxString color, wxString message)
{
wxStatusBar* bar = wxFrame::GetStatusBar();
bar->SetStatusText("", 0);
wxStaticText* txt = new wxStaticText(bar, wxID_ANY, wxT(""), wxPoint(10, 5), wxDefaultSize, 0);
bar->SetForegroundColour(wxColour(color));
txt = new wxStaticText(bar, wxID_ANY, message, wxPoint(10, 5), wxDefaultSize, 0);
txt->Show(true);
}
預期行為
清除以前的狀態欄文本。 向狀態欄添加新文本
實際行為
不會清除該文本,將新文本添加到頂部,並且先前的文本會溢出。
每次您以wxStatusBar作為父級創建新的wxStaticText時,都無需創建任何其他文本對象並將狀態欄設置為其父級,而不是修改任何現有文本字段。 這些將繼續存在,直到被刪除。
要更改狀態欄中特定現有字段的文本,應使用bar-> SetStatusText或bar-> PushStatusText。
這應該足夠了:
void TestFrame::UpdateStatusBar(wxString color, wxString message)
{
wxStatusBar* bar = GetStatusBar();
bar->SetForegroundColour(wxColour(color));
bar->SetStatusText(message, 0); //text in field 0
}
注意,我從GetStatusBar()中刪除了wxFrame::
,因為您的TestFrame
從wxFrame
派生的。
您可以將wxStaticText
或其他控件添加到狀態欄。 但這需要您自己處理狀態欄的大小事件,並放置添加的控件,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.