簡體   English   中英

我如何清除狀態欄文本wxwidgets C ++

[英]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:: ,因為您的TestFramewxFrame派生的。

您可以將wxStaticText或其他控件添加到狀態欄。 但這需要您自己處理狀態欄的大小事件,並放置添加的控件,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM