Can';t从文本视图中获取GtkTextBuffer-C,GTK3
我正在使用GTK3+、Anjuta(Glade插件)和C编写一个助手 我有一个文本视图,但获取它使用的文本缓冲区时遇到问题 给我带来麻烦的代码是: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
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
aGtkTextView*
有关更多信息,请参阅:
您的代码是正确的,除了*缓冲区
不应是GtkWidget
而是
一个GtkTextBuffer
。更改您的线路
GtkWidget*缓冲区代码>
到
GtkTextBuffer*buffer代码>
并且不会出现任何错误。
要避免宏,请声明textview
aGtkTextView*
有关更多信息,请参阅:
您的代码是正确的,除了*缓冲区
不应是GtkWidget
而是
一个GtkTextBuffer
。更改您的线路
GtkWidget*缓冲区代码>
到
GtkTextBuffer*buffer代码>
并且不会出现任何错误。
要避免宏,请声明textview
aGtkTextView*
有关更多信息,请参阅:
您的代码是正确的,除了*缓冲区
不应是GtkWidget
而是
一个GtkTextBuffer
。更改您的线路
GtkWidget*缓冲区代码>
到
GtkTextBuffer*buffer代码>
并且不会出现任何错误。
要避免宏,请声明textview
aGtkTextView*
有关更多信息,请参阅: