免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2360 | 回复: 0
打印 上一主题 下一主题

gtk notebook和textview切换问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-15 19:31 |只看该作者 |倒序浏览
#include <gtk/gtk.h>
GtkWidget *txtview;
GtkWidget *win;


void refresh_textview( GtkWidget *win )
{
        GtkTextBuffer *buffer;
        GtkTextIter iter;
        GtkTextMark *mark;
        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (txtview));
        mark = gtk_text_buffer_get_insert (buffer); //
        gtk_text_buffer_get_iter_at_mark (buffer, &iter, mark);
        gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW (txtview),mark);
        gtk_text_buffer_insert (buffer, &iter, "Buffer", -1);
//        gtk_text_view_set_buffer(GTK_TEXT_VIEW(txtview),buffer);
        gtk_widget_draw(GTK_WIDGET(txtview),NULL);       
}

void clicked_cb(GtkWidget *button, GtkNotebook *nb)
{
        GtkWidget *lbl;//, *txtview;
        gchar str[256];
        static gint n = 0;
        GtkWidget *vbox;

        sprintf(str, "Page %d", ++n);
       
        lbl = gtk_label_new(str);
        gtk_widget_show(lbl);
        txtview = gtk_text_view_new();
        refresh_textview(txtview); // 向textview中加入内容
        vbox = gtk_vbox_new(TRUE,0);       
        gtk_container_add(GTK_CONTAINER(vbox),txtview);       
        gtk_widget_show(vbox);
        gtk_notebook_append_page(nb, vbox, lbl);  //加入页面

        gtk_widget_show(txtview);
        gtk_widget_show(GTK_WIDGET(nb));
        gtk_widget_queue_draw(GTK_WIDGET(nb));

}

void get_pagenum(GtkWidget *widget,GtkWidget *notebook)
{
       
    GtkWidget *dialog,*window;
    gint n;
    n=gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook));
       
    window=gtk_widget_get_toplevel(widget);
    dialog=gtk_message_dialog_new(GTK_WINDOW(window),GTK_DIALOG_MODAL||GTK_DIALOG_NO_SEPARATOR,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,"PageNum:%d",n);
    gtk_dialog_run(GTK_DIALOG(dialog));
    gtk_widget_destroy(dialog);
    g_print("%d\n",n);
}

gboolean refreshwin(gpointer notebook)
{
        int num;
        int pagenum;
        pagenum=gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook));
        num = gtk_notebook_current_page(GTK_NOTEBOOK(notebook));
        g_print("Current Num:%d AllPagenum = %d\n",num,pagenum);
        g_print("Refreshwin\n");
        gtk_widget_draw(notebook,NULL);
        gtk_widget_show(notebook);
        gtk_widget_show(win);
        return TRUE;
}

int main(int argc, char **argv)
{

        GtkWidget *vbox;
        GtkWidget *nb;
        GtkWidget *button;
       
        gtk_init(&argc, &argv);
       
        win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(win),400,300);
        g_signal_connect(G_OBJECT(win), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
       
        vbox = gtk_vbox_new(FALSE, 0);
        gtk_container_add(GTK_CONTAINER(win), vbox);
        gtk_widget_show(vbox);
       
        nb = gtk_notebook_new();

        g_signal_connect(G_OBJECT(nb),"switch_page",G_CALLBACK(refreshwin),nb);

        gtk_box_pack_start(GTK_BOX(vbox), nb, TRUE, TRUE, 0);
        gtk_widget_show(nb);
       
        button = gtk_button_new_with_label("Add Page");
        g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(clicked_cb), (gpointer)nb);
        gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
        gtk_widget_show(button);
       
        gtk_widget_show(win);
       
        gtk_main();
       
        return 0;
}



为什么从notebook切换后,textview显示不了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP