我是使用GTK的新手。这是我的代码的一小部分。目的是复制整个当前行。内容存储在“行”中。 “start”和“end”是开始和结束时的文本。
gtk_text_iter_set_line_offset (start, 0);
gtk_text_iter_forward_to_line_end (end);
line = gtk_text_iter_get_text (start, end);
gtk_clipboard_set_text (clipboard, line, -1);
执行时,我收到以下错误消息。
Gtk[27786]: CRITICAL: gtk_text_iter_set_line_offset: assertion 'iter != NULL' failed
Gtk[27786]: CRITICAL: gtk_text_iter_forward_to_line_end: assertion 'iter != NULL' failed
Gtk[27786]: CRITICAL: gtk_text_iter_get_text: assertion 'start != NULL' failed
Gtk[27786]: CRITICAL: gtk_clipboard_set_text: assertion 'text != NULL' failed
代码块有什么问题?我该如何解决? 谢谢大家:))
答案 0 :(得分:0)
你可能已经将你的迭代器声明为GtkTextIter *start
。相反,根据GTK的文档中的text widget conceptual overview," GtkTextIter
是一个设计用于在堆栈上分配的结构;它保证可以按值复制,并且永远不会包含任何堆分配的数据。"这意味着你不应该将它们声明为指针:
GtkTextIter start, end;
// ...
gtk_text_iter_set_line_offset (&start, 0);
gtk_text_iter_forward_to_line_end (&end);
line = gtk_text_iter_get_text (&start, &end);