该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
enum
{
ICON,
TEXT,
COLUMN,
NUM_COLS
};
void on_changed(GtkWidget * widget, gpointer statusbar)
{
GtkTreeIter iter;
GtkTreeModel *model;
char *value;
if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget), &model, &iter))
{
gtk_tree_model_get(model, &iter,COLUMN , &value, -1);
gtk_statusbar_push(GTK_STATUSBAR(statusbar), gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), value), value);
g_free(value);
}
}
static GtkTreeModel *create_and_fill_model(void)
{
GtkTreeStore *treestore;
GtkTreeIter *iter;
GtkTreeIter toplevel, child;
treestore = gtk_tree_store_new(2,GDK_TYPE_PIXBUF ,G_TYPE_STRING);
gtk_tree_store_append(treestore, &toplevel, NULL);
gtk_tree_store_set(treestore, &toplevel, ICON,NULL,-1);
gtk_tree_store_append(treestore, &child, &toplevel);
gtk_tree_store_set(treestore, &child,TEXT,"a.c", -1);
return GTK_TREE_MODEL(treestore);
}
static GtkWidget *create_view_and_model(void)
{
GtkTreeViewColumn *col;
GtkWidget *view;
GtkTreeModel *model;
GtkCellRenderer *renderer_icon; //用于解释图标
GtkCellRenderer *renderer_text; //用于解释文字
view = gtk_tree_view_new();
col = gtk_tree_view_column_new();
gtk_tree_view_column_set_title (col, "Products");
renderer_icon = gtk_cell_renderer_pixbuf_new();
gtk_tree_view_column_pack_start(col,renderer_icon,TRUE);
gtk_tree_view_column_set_attributes (col, renderer_icon, "pixbuf", ICON, NULL);
renderer_text = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col,renderer_text,TRUE);
gtk_tree_view_column_set_attributes(col, renderer_text, "text",TEXT,NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
model = create_and_fill_model();
gtk_tree_view_set_model(GTK_TREE_VIEW(view), model);
g_object_unref(model);
return view;
}
int main(int argc, char **argv)
{
GtkWidget *window;
GtkWidget *view1,*view2;
GtkTreeSelection *selection;
GtkWidget *vbox;
GtkWidget *hbox1,*hbox2;
GtkWidget *label;
GtkWidget *button1,*button2;
GtkWidget *statusbar;
GtkWidget *textview1;
char txt[]="login sucess";
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);// window
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window), "ftp server");
gtk_widget_set_size_request(window, 550, 300);
vbox = gtk_vbox_new(FALSE, 3); //vbox
gtk_container_add(GTK_CONTAINER(window), vbox);
label=gtk_label_new(txt); //label
gtk_container_add(GTK_CONTAINER(vbox),label);
hbox1 = gtk_hbox_new(2, FALSE);
gtk_container_add(GTK_CONTAINER(vbox), hbox1);
view1 = create_view_and_model();
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view1));
gtk_box_pack_start(GTK_BOX(hbox1), view1, TRUE, TRUE, 1);
view2 = create_view_and_model();
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view2));
gtk_box_pack_start(GTK_BOX(hbox1), view2, TRUE, TRUE, 1);
//hbox
hbox2 = gtk_hbox_new(2, FALSE);
gtk_container_add(GTK_CONTAINER(vbox), hbox2);
//button1
button1=gtk_button_new_with_label("up");
gtk_container_add(GTK_CONTAINER(hbox2),button1);
//button2
button2=gtk_button_new_with_label("down");
gtk_container_add(GTK_CONTAINER(hbox2),button2);
//statusbar
/*textview1= gtk_entry_new();
gtk_container_add(GTK_CONTAINER(vbox),textview1);
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview1));
gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);*/
statusbar = gtk_statusbar_new();
gtk_box_pack_start(GTK_BOX(vbox), statusbar, FALSE, TRUE, 1);
//callbacak
g_signal_connect(selection, "changed", G_CALLBACK(on_changed), statusbar);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
// 本来就对gtk不熟,看了一周头都大了,希望找个人能帮忙指导一下。