GTK +笔记本 - 无法打印当前标签文本

时间:2014-01-31 09:24:42

标签: c gtk

大家好,

我正在尝试将我的PyGTK应用程序转换为C,一切都是 按预期工作,直到我遇到检索笔记本小部件的标签名称的问题。

以下是我正在努力实现的一个简短例子。

GtkBuilder      *builder = NULL;
GtkWidget       *window = NULL;
GtkWidget       *notebook = NULL;
GError     *error = NULL;

void on_page_switch(GtkNotebook *notebook, gpointer data)
{
    // gtk_notebook_get_tab_label_text(GtkNotebook *notebook,GtkWidget *child)
}

int main (int argc, char *argv[])
{
    gtk_init (&argc, &argv);

    builder = gtk_builder_new ();

    if( ! gtk_builder_add_from_file( builder, "data/glade.glade", &error ) )
    {
        g_warning( "%s", error->message );
        g_free( error );
        return( 1 );
    }

    window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
    gtk_window_set_resizable (GTK_WINDOW(window), FALSE);
    g_signal_connect(window, "destroy", GTK_SIGNAL_FUNC (on_window_destroy), NULL);

    notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook1"));
    g_signal_connect(GTK_NOTEBOOK (notebook), "switch-page", GTK_SIGNAL_FUNC(on_page_switch), NULL);

    gtk_builder_connect_signals (builder, NULL);
    g_object_unref (G_OBJECT (builder));

    gtk_widget_show_all(window);
    gtk_main ();

    return 0;
}

您能否就如何获取当前标签的标签名称给我一些指示?

我认为应该是这个函数gtk_notebook_get_tab_label_text(GtkNotebook *notebook, GtkWidget *child),但是我无法让它工作。

为我糟糕的英语道歉。

提前致谢, 亚历

///编辑////

实际上回调函数是错误的...... 我错过了几个通过“switch-page”事件传递的指针。

void on_page_switch(GtkNotebook * notebook, GtkWidget *page, guint page_num, gpointer user_data)
{
    GtkWidget * child = gtk_notebook_get_nth_page(notebook, page_num);
    printf(" -> %i \n", gtk_notebook_page_num(notebook, child));
}

1 个答案:

答案 0 :(得分:1)

正确,您应该可以使用gtk_notebook_get_tab_label_text()来执行此操作。

您需要一个指向您感兴趣的标签的子窗口小部件(页面内容)的指针,如果您没有方便的笔记本电脑,可以使用gtk_notebook_get_nth_page()来获取它。

由于您没有指定在尝试时遇到的问题,因此很难提供更多帮助。