gtkmm 学习笔记(2) 按钮.

Gtkmm 按钮

gtkmm提供了四种基础的按钮类型
Gtk::Button, Gtk::ToggleButton, Gtk::CheckButton, Gtk::RadioButton

有两 种方式建立一个Button, 你可以在构造函数中指定Button的文本,或在稍后通过set_label()来设置它.
想要定义一个加速键,在文本中的某个字符前加一条下划线,并加上true参数以指明是使用 mnemonic paramter.
如:
Gtk::Button* pButton=new Gtk::Button("_Something",true);

还有一些通用的按钮可以用(Stock item), 这样你的程序就可以跟其他程序有一致的外观了.
如: Gtk::Button* pButton=new Gtk::Button(Gtk::Stock::OK);
这样构造的函数,将会有标准的文本(所有语言,跟环境中的一样),有标准的加速键,和标准的图标 .

还有,Gtk::Button也是个容器,所以你可以在上面放任何widget,如Gtk::Image

ToggleButton跟普通按钮差不多,不过你可以通过 get_active()  和 set_active()来取得和设置按钮的
状态,如果按钮是按下的,get_active()返回true.
另外还可以使用 toggled()来进行切换

CheckButton从ToggleButton继承过来,唯一真正的区别是两种的外观.

RadioButton跟CheckButton差不多,区别是它可以放在一个组中,一个组里只有一个RadioButton可以被
选中. 一种如下:
  Gtk::RadioButton m_rb1, m_rb2,m_rb3;
  ........
  Gtk::RadioButton::Group group=m_rb1.get_group();
  m_rb2.set_group(group);
  m_rb3.set_group(group);
通过得到第一个按钮的group并设置到后面的按钮中. 注意,你不能只是
m_rb2.set_group(m_rb1.get_group());
因为group会被set_group()修改,所以是non-const的.

另一种是:
  Gtk::RadioButton::Group group;
  Gtk::RadioButton *m_rb1=Gtk::manage(new Gtk::RadioButton(group,"button1"));
  Gtk::RadioButton *m_rb2=Gtk::manage(new Gtk::RadioButton(group,"button2"));

你可能感兴趣的:(gtkmm)