Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t从文本视图中获取GtkTextBuffer-C,GTK3_C_Gtk3_Anjuta - Fatal编程技术网

Can';t从文本视图中获取GtkTextBuffer-C,GTK3

Can';t从文本视图中获取GtkTextBuffer-C,GTK3,c,gtk3,anjuta,C,Gtk3,Anjuta,我正在使用GTK3+、Anjuta(Glade插件)和C编写一个助手 我有一个文本视图,但获取它使用的文本缓冲区时遇到问题 给我带来麻烦的代码是: GtkWidget * text_view_hilera_1; GtkWidget * buffer; text_view_hilera_1 = gtk_builder_get_object(build_princ,"txt_hilera1"); buffer = gtk_text_view_get_buffer(te

我正在使用GTK3+、Anjuta(Glade插件)和C编写一个助手

我有一个文本视图,但获取它使用的文本缓冲区时遇到问题

给我带来麻烦的代码是:

    GtkWidget * text_view_hilera_1;
    GtkWidget * buffer;
    text_view_hilera_1 = gtk_builder_get_object(build_princ,"txt_hilera1");
    buffer = gtk_text_view_get_buffer(text_view_hilera_1);
    error(gtk_buildable_get_name(buffer));
Error()是一个只输出字符串的函数,用于调试。get_buffer()函数似乎没有返回null,我已经检查过了。它确实返回了一些东西,一个非空指针,但指向什么,我不知道,因为缓冲区会使每个断言失败

(nw:6368): Gtk-CRITICAL **: gtk_buildable_get_name: assertion `GTK_IS_BUILDABLE (buildable)' failed
它还使GTK_IS_文本_缓冲区和GTK_IS_小部件失效。文本视图工作正常,并使用gtk_buildable_get_name打印其名称

我可以为UI共享XML,但它对于文章来说太大了。如果你想要任何特定的部分,只要问我。谢谢你的帮助

这是文本视图的XML:

                            <object class="GtkTextView" id="txt_hilera1">
                            <property name="width_request">19</property>
                            <property name="height_request">60</property>
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="vscroll_policy">natural</property>
                            <property name="wrap_mode">char</property>
                            </object>

19
60
真的
真的
自然的
烧焦

gtk_text_view_get_buffer()的原型是:

GtkTextBuffer*gtk_text_view\u get_buffer(GtkTextView*text_view)


与其将
buffer
声明为
GtkWidget*
,不如将其声明为
GtkTextBuffer*

由于您正在对
text\u view\u hilera\u 1
使用泛型
GtkWidget*
,因此在调用
GTK\u text\u view\u get\u buffer()
时,使用
GTK\u text\u view()
宏将其强制转换为
GtkTextView*

重要部分包括:

GtkWidget *text_view_hilera_1;
GtkTextBuffer *buffer;

//...builder-related code

buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(text_view_hilera_1) );

RE:


gtk_text_view_get_buffer()
的原型是:

GtkTextBuffer*gtk_text_view\u get_buffer(GtkTextView*text_view)


与其将
buffer
声明为
GtkWidget*
,不如将其声明为
GtkTextBuffer*

由于您正在对
text\u view\u hilera\u 1
使用泛型
GtkWidget*
,因此在调用
GTK\u text\u view\u get\u buffer()
时,使用
GTK\u text\u view()
宏将其强制转换为
GtkTextView*

重要部分包括:

GtkWidget *text_view_hilera_1;
GtkTextBuffer *buffer;

//...builder-related code

buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(text_view_hilera_1) );

RE:


gtk_text_view_get_buffer()
的原型是:

GtkTextBuffer*gtk_text_view\u get_buffer(GtkTextView*text_view)


与其将
buffer
声明为
GtkWidget*
,不如将其声明为
GtkTextBuffer*

由于您正在对
text\u view\u hilera\u 1
使用泛型
GtkWidget*
,因此在调用
GTK\u text\u view\u get\u buffer()
时,使用
GTK\u text\u view()
宏将其强制转换为
GtkTextView*

重要部分包括:

GtkWidget *text_view_hilera_1;
GtkTextBuffer *buffer;

//...builder-related code

buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(text_view_hilera_1) );

RE:


gtk_text_view_get_buffer()
的原型是:

GtkTextBuffer*gtk_text_view\u get_buffer(GtkTextView*text_view)


与其将
buffer
声明为
GtkWidget*
,不如将其声明为
GtkTextBuffer*

由于您正在对
text\u view\u hilera\u 1
使用泛型
GtkWidget*
,因此在调用
GTK\u text\u view\u get\u buffer()
时,使用
GTK\u text\u view()
宏将其强制转换为
GtkTextView*

重要部分包括:

GtkWidget *text_view_hilera_1;
GtkTextBuffer *buffer;

//...builder-related code

buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(text_view_hilera_1) );

RE:


您的代码是正确的,除了
*缓冲区
不应该是
GtkWidget
但是 一个
GtkTextBuffer
。更改您的线路
GtkWidget*缓冲区
GtkTextBuffer*buffer
并且不会出现任何错误。
要避免宏,请声明
textview
a
GtkTextView*

有关更多信息,请参阅:


  • 您的代码是正确的,除了
    *缓冲区
    不应是
    GtkWidget
    而是 一个
    GtkTextBuffer
    。更改您的线路
    GtkWidget*缓冲区
    GtkTextBuffer*buffer
    并且不会出现任何错误。
    要避免宏,请声明
    textview
    a
    GtkTextView*

    有关更多信息,请参阅:


  • 您的代码是正确的,除了
    *缓冲区
    不应是
    GtkWidget
    而是 一个
    GtkTextBuffer
    。更改您的线路
    GtkWidget*缓冲区
    GtkTextBuffer*buffer
    并且不会出现任何错误。
    要避免宏,请声明
    textview
    a
    GtkTextView*

    有关更多信息,请参阅:


  • 您的代码是正确的,除了
    *缓冲区
    不应是
    GtkWidget
    而是 一个
    GtkTextBuffer
    。更改您的线路
    GtkWidget*缓冲区
    GtkTextBuffer*buffer
    并且不会出现任何错误。
    要避免宏,请声明
    textview
    a
    GtkTextView*

    有关更多信息,请参阅: