我想更改位于wxRibbonButtonBar
下方的按钮的标签。可以通过调用GetItemByID
的{{1}}方法来访问该按钮,该方法返回的对象类型为wxRibbonButtonBar
,这是一个没有方法的抽象类。
我进行了广泛的搜索,但无法找到关于如何动态更改wx中的功能区按钮的明确解决方案。任何帮助表示赞赏:
下面的行给出错误:
不允许使用指向不完整类类型的指针
wxRibbonButtonBarButtonBase
其中this->help_bar->GetItemById(RIBBON_CHECK)
为help_bar
答案 0 :(得分:0)
我在使用wxWidgets的samples目录下的wx Samples时找到了解决这个问题的方法。 Ribbon项目很好地展示了如何将按钮标签的更改绑定到EVT_UPDATE_UI以及使用wxUpdateUIEvent对象的SetText()方法。
SetText()方法不会更新UI,因此仍需要重新绘制或刷新。我想这是另一个问题。
我仍然认为这是更新按钮标签的一种非常奇怪的方式,但至少有一个答案:)
示例实施:
/// Event Table
BEGIN_EVENT_TABLE(SomeClass, MyFrame1)
EVT_UPDATE_UI(RIBBON_HELPOPEN, SomeClass::UpdateRibbonButtonText)
EVT_UPDATE_UI(RIBBON_FITVIEW, SomeClass::UpdateRibbonButtonText)
END_EVENT_TABLE()
void SomeClass::UpdateRibbonButtonText(wxUpdateUIEvent &event) {
if (event.GetId() == RIBBON_HELPOPEN) {
event.SetText(_("Help"));
}
else if (event.GetId() == RIBBON_FITVIEW) {
event.SetText(_("Fit View"));
}
}