GtkRadioButton示例
#include<gtk/gtk.h>
GtkWidget *window,*hbox,*button1,*button2,*button3;
void toggled(GtkWidget *widget, gpointer data)
{
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
{
g_print ("%s\n", data);
}
}
void destroy(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}
int main(int argc,char** argv)
{
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Radio button");
gtk_container_set_border_width(GTK_CONTAINER(window),3);
g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),0);
hbox=gtk_hbox_new(TRUE,3);
/* 单选按钮的创建 */
button1=gtk_radio_button_new_with_label(NULL,"orange");
g_signal_connect(G_OBJECT(button1),"toggled",G_CALLBACK(toggled),"orange");
/* 每创建一个单选按钮时,都必须调用一次gtk_radio_button_get_group,否则出错*/
button2=gtk_radio_button_new_with_label(gtk_radio_button_get_group(GTK_RADIO_BUTTON(button1)),"apple");
g_signal_connect(G_OBJECT(button2),"toggled",G_CALLBACK(toggled),"apple");
button3=gtk_radio_button_new_with_label(gtk_radio_button_get_group(GTK_RADIO_BUTTON(button1)),"banana");
g_signal_connect(G_OBJECT(button3),"toggled",G_CALLBACK(toggled),"banana");
/* 设置第三个按钮为激活状态 */
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button3),TRUE);
/* 将单选按钮添加到hbox内 */
gtk_box_pack_start(GTK_BOX(hbox),button1,TRUE,TRUE,3);
gtk_box_pack_start(GTK_BOX(hbox),button2,TRUE,TRUE,3);
gtk_box_pack_start(GTK_BOX(hbox),button3,TRUE,TRUE,3);
gtk_container_add(GTK_CONTAINER(window),hbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
GtkStatusicon
#include <gtk/gtk.h>
int main(int argc, char **argv) {
GtkStatusIcon *tray_icon;
gtk_init(&argc, &argv);
tray_icon = gtk_status_icon_new();
gtk_status_icon_set_from_file(tray_icon, "/tmp/trayicon.png");
gtk_status_icon_set_tooltip(tray_icon, "Hello Tray Icon!!");
gtk_status_icon_set_visible(tray_icon, TRUE);
gtk_main();
return 0;
}
GTK+学习笔记-树型视图与模型(GtkTreeView)
GtkTreeStore *lefttree = NULL;
树型模型的建立:


















树型视图的建立以及与数据模型的关联:






























下面为建立好的树型视图实现一个功能:
当用户选中一个有子行的行时按Enter或Space键展开或收起子行,当选中一个没有子行的行时按Enter或Space键后台打印一些信息。











































获得treeview中选中的一行的GtkTreeIter或path:



要想更改GtkTreeIter指向的数据的值,使用:
gtk_tree_store_set (lefttree, &iter,CHECKED_COLUMN ,data);
GtkTreeView本身是不带横纵滚动条的,把他放入GtkScrolledWindow中就可以了,滚动条会随内容自动调整。