【发布时间】:2017-08-17 23:34:33
【问题描述】:
我正在尝试制作多个 Gtk::ToggleButton 来充当 Gtk::RadioButton。当按下其中一个按钮时,另一个按钮关闭。
如果 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;
}
}
【问题讨论】:
标签: radio-button gtk signals togglebutton gtkmm