我試圖讓多個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;
}
}