gpt4 book ai didi

无法从 TextView 获取 GtkTextBuffer - C、GTK3

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:42 28 4
gpt4 key购买 nike

我正在使用 GTK3+、Anjuta(Glade 插件)和 C 进行作业。

我有一个 TextView ,但我无法获取它正在使用的文本缓冲区。

给我带来麻烦的代码是这样的:

    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_TEXT_BUFFER 和 GTK_IS_WIDGET。 TextView 工作正常,并使用 gtk_buildable_get_name 打印其名称。

我可以分享 UI 的 XML,但它对于帖子来说太大了。如果您想要任何特定部分,请问我。感谢您的帮助!

这是 TextView 的 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>

最佳答案

gtk_text_view_get_buffer() 的原型(prototype)是:

GtkTextBuffer *gtk_text_view_get_buffer (GtkTextView *text_view);


而不是声明 buffer作为 GtkWidget * , 声明为 GtkTextBuffer * .

由于您使用的是通用 GtkWidget *对于 text_view_hilera_1 , 转换到 GtkTextView*GTK_TEXT_VIEW()调用时的宏 gtk_text_view_get_buffer() .

重要部分:

GtkWidget *text_view_hilera_1;
GtkTextBuffer *buffer;

//...builder-related code

buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(text_view_hilera_1) );

回复:

关于无法从 TextView 获取 GtkTextBuffer - C、GTK3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917352/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com