나는 Anjuta의 Ubuntu 12.04에서 C와 GTK 프로그램을 쓰고있다. nbc (Lego NXT Compiler)의 그래픽 인터페이스입니다. 나는 GTKTextView있다. 이제 텍스트 뷰의 내용을 GTKFileChooser가 선택할 수있는 파일에 저장하려고합니다. 이제 TextView에서 텍스트를 가져 와서 파일에 쓰는 방법을 모르겠습니다. 어떻게해야합니까?GTKTextBuffer의 내용을 파일에 저장하는 방법
4
A
답변
4
우선 gtk_text_view_get_buffer()
을 사용하여 GtkTextView
에서 GtkTextBuffer
을 가져옵니다. 그런 다음 버퍼의 텍스트를 가져 오는 데 사용할 버퍼에서 시작 및 끝 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 문서 : textview1에
1
void on_toolbutton3_clicked(GtkToolButton *toolbutton, gpointer data)
{
GtkWidget *dialog;
dialog = gtk_file_chooser_dialog_new ("Abspeichern...",
NULL,
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
NULL);
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{
char *filename;
char *text;
GtkTextIter *start;
GtkTextIter *end;
gboolean result;
GError *err;
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
gtk_widget_set_sensitive (data, FALSE);
savebuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (data));
gtk_text_buffer_get_start_iter (savebuffer, &start);
gtk_text_buffer_get_end_iter (savebuffer, &end);
text = gtk_text_buffer_get_text (savebuffer, &start, &end, FALSE);
gtk_text_buffer_set_modified (savebuffer, FALSE);
gtk_widget_set_sensitive (data, 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 (filename, text, -1, &err);
if (result == FALSE)
{
/* error saving file, show message to user */
}
g_free (text);
}
gtk_widget_destroy (dialog);
}
데이터 포인트 여기에 내 옛날 튜토리얼에서 미리보기입니다.
관련 문제
- 1. 안드로이드의 텍스트 파일에 listview의 내용을 저장하는 방법?
- 2. VB에서 TextField 내용을 파일에 저장하는 방법
- 3. ArrayList의 내용을 파일에 저장하는 방법은 무엇입니까?
- 4. 파일 내용을 저장하는 방법
- 5. 내용을 깔끔한 정렬로 파일에 저장하는 방법은 무엇입니까?
- 6. NSTreeController 파일에 저장하는 방법
- 7. 배열을 파일에 저장하는 방법
- 8. CGPath를 파일에 저장하는 방법
- 9. 큰 데이터를 파일에 저장하는 방법
- 10. 안드로이드에서, arraylist의 내용을 저장하는 방법
- 11. 바이트 단위로 GtkTextBuffer의 정확한 크기를 얻는 방법?
- 12. WPF 이미지를 파일에 저장하는 방법
- 13. 데이터를 XML 파일에 저장하는 방법
- 14. 이미지를 WPF 파일에 저장하는 방법
- 15. QListView 항목을 파일에 저장하는 방법
- 16. boost :: multi_array를 파일에 저장하는 방법
- 17. matlab에있는 파일에 행렬을 저장하는 방법
- 18. 구성 데이터를 파일에 저장하는 방법
- 19. Apache Ant 특성 값을 파일에 저장하는 방법
- 20. 파일에 쓰고 동적으로 Java에 저장하는 방법
- 21. DOMPDF 생성 된 내용을 파일에 저장하는 방법은 무엇입니까?
- 22. 끝에 StreamWriter를 사용하여 파일 내용을 저장하는 방법
- 23. ListView 내용을 텍스트 파일로 저장하는 방법?
- 24. 파일을 열고 내용을 저장하는 방법 TextField?
- 25. JTable의 내용을 txt 파일에 쓰는 방법
- 26. 연결된 목록의 내용을 파일에 쓰는 방법
- 27. 레일즈 데이터베이스의 내용을 외부 파일에 쓰는 방법
- 28. 배열의 내용을 파일에 인쇄
- 29. TextBox의 내용을 파일에 저장
- 30. 목록 파일 항목을 텍스트 파일에 저장하는 방법
그런데'result'는 gboolean이고'buffer'는 GtkTextBuffer이고'err'은 GError이고'start' /'end'는 GtkTextIter입니다. 이 코드에서 가져온 것입니다 : http://www.micahcarrick.com/files/gtk-glade-tutorial/C/main.c –
내 프로그램에서 코드를 구현했지만 오류 코드 11 (세그먼트 오류)으로 인해 충돌합니다. 뭐가 문제 야? 이것은 내 함수입니다 : – user1464420
실제로 사용하는 함수에 붙여 넣을 수 있습니까? –