我正在使用C和GTK在Anjuta中使用Ubuntu 12.04编写程序。它是nbc(乐高NXT编译器)的图形界面。我有一个GTKTextView。现在,我想将textview的内容保存到一个文件中,该文件可以由GTKFileChooser选择。现在,我不知道如何从TextView中获取文本并将其写入文件。我该怎么做呢?

最佳答案

首先,使用GtkTextBufferGtkTextView获取gtk_text_view_get_buffer()。然后从缓冲区获取开始和结束GtkTextIters,以用于获取缓冲区的文本。最后,使用您选择的API将文本写入文件,但是,我建议使用Gio。这是我的旧教程中的摘录:

gtk_widget_set_sensitive (text_view, FALSE);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (editor->text_view));
gtk_text_buffer_get_start_iter (buffer, &start);
gtk_text_buffer_get_end_iter (buffer, &end);
text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
gtk_text_buffer_set_modified (buffer, FALSE);
gtk_widget_set_sensitive (editor->text_view, TRUE);

/* set the contents of the file to the text from the buffer */
if (filename != NULL)
    result = g_file_set_contents (filename, text, -1, &err);
else
    result = g_file_set_contents (editor->filename, text, -1, &err);

if (result == FALSE)
{
    /* error saving file, show message to user */
    error_message (err->message);
    g_error_free (err);
}

g_free (text);

请查看以下API文档:
  • http://developer.gnome.org/gtk3/stable/GtkTextBuffer.html
  • http://developer.gnome.org/glib/stable/glib-File-Utilities.html
  • 09-19 18:05