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);
}
预期行为
清除以前的状态栏文本。 向状态栏添加新文本
实际行为
文本没有被清除,新的文本被添加到顶部并且之前的文本溢出。
最佳答案
每次您创建一个新的 wxStaticText 并将您的 wxStatusBar 作为父对象,而不是修改任何现有的文本字段,您正在创建一个额外的文本对象并将状态栏设置为其父对象。这些将一直存在,直到它们被删除。
当您想更改状态栏中特定现有字段的文本时,您应该使用 bar->SetStatusText 或 bar->PushStatusText。
关于c++ - 我如何清除状态栏文本 wxwidgets C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46237399/