私はGtk :: RadioButtonとして動作する複数のGtk :: ToggleButtonを作成しようとしています。いずれかのボタンが押されると、他のスイッチはオフになります。gtkmm信号を呼び出さずにトグルボタンの状態を変更する
Gtk :: ToggleButtonが切り替え(押されているか押されていない)を単独で処理していない場合は、switch文を作成するだけで簡単です。
私はsignal_clicked()を呼び出して通常のボタンとして処理することを計画しています。ボタンを押したか押さなかったset_active(true/false)関数を呼び出すconnectここで
は私がやろうとしているものの例です:ボタンがクリックされたときに
イベントを呼び出します:
ボタンをトグル//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;
}
}