我试图让多个Gtk :: ToggleButton作为Gtk :: RadioButton。当其中一个按钮被按下时,另一个按钮关闭。gtkmm更改切换按钮状态,无需调用信号
如果Gtk :: ToggleButton没有自己处理切换(按下或不按下),它就像创建switch语句一样简单。因此,我打算将它作为常规按钮进行切换,调用signal_clicked()。connect(),它调用set_active(true/false)函数,使按钮被按下或不按下。
这里是例子我想要做的事:
事件调用按钮被点击时:
//enum {infoState, artState, editState, userState, exitState}; is initialised in header
artButt.signal_clicked().connect(sigc::bind<short int>(sigc::mem_fun(*this, &fooclass::toggleButton), artButt));
editButt.signal_clicked().connect(sigc::bind<short int>(sigc::mem_fun(*this, &fooclass::toggleButton), editButt));
切换按钮:
void fooClass::toggleButton()
{
//oldState and enum {infoState, artState, editState, userState, exitState}; are initialised in header
if(oldState != newState)
{
//disable old togglebutton
switch (oldState)
{
case infoState:
infoButt.set_active(false);
break;
case artState:
artButt.set_active(false);
break;
case editState:
editButt.set_active(false);
break;
case userState:
userButt.set_active(false);
break;
}
//enable new one
switch (newState)
{
case infoState:
userButt.set_active(false);
break;
case artState:
artButt.set_active(true);
break;
case editState:
editButt.set_active(true);
break;
case userState:
userButt.set_active(true);
break;
}
oldState = newState;
}
}