2016-12-16 157 views
0

我正在使用codeblocks和glade编写一个c程序。起初,我认为这个问题是因为我的代码。我尝试了我在网上找到的示例代码,它不使用glade - 仅使用GTK - 而且它工作正常。然后,我尝试了一个只有一个窗口和一个textview的新世界,但它并没有工作。Glade Textview不显示文字

GtkTextBuffer *buffer= gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview1)); 
gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0); 
gtk_text_buffer_insert(buffer, &iter, "Plain text ... it's working\n", -1); 

//gtk_text_buffer_set_text (buffer, "Hello, this is some text", -1); 
gtk_widget_show_all(window); 
gtk_main(); 

我也尝试了注释行。所以问题是如何让glade textviews显示文本。

值得一提的是,我使用glade本身的硬编​​码文本没有出现。 这里是完整的代码。

GtkWidget *textview1; 

int main(int argc, char *argv[]) 
{ 
GtkBuilder  *builder; 
GtkWidget  *window; 
gtk_init(&argc, &argv); 
GtkTextIter iter; 

builder = gtk_builder_new(); 
gtk_builder_add_from_file (builder, "Unsaved 1.glade", NULL); 

window = GTK_WIDGET(gtk_builder_get_object(builder, "window1")); 
gtk_builder_connect_signals(builder, NULL); 

g_object_unref(builder); 
textview1=GTK_WIDGET(gtk_builder_get_object(builder, "textview1")); 



GtkTextBuffer *buffer= gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview1)); 
gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0); 
gtk_text_buffer_insert(buffer, &iter, "Plain text ... it's working\n", -1); 
gtk_text_buffer_set_text (buffer, "Hello, this is some text", -1); 
gtk_widget_show_all(window); 
gtk_main(); 
struct Student_t* arrayOfStudents=load(); 
return 0; 
} 

空地文件:

<interface> 
<requires lib="gtk+" version="2.16"/> 
<!-- interface-naming-policy project-wide --> 
<object class="GtkWindow" id="window1"> 
<property name="window_position">center</property> 
<property name="default_width">1000</property> 
<property name="default_height">600</property> 
<child> 
<object class="GtkScrolledWindow" id="scrolledwindow1"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="hscrollbar_policy">automatic</property> 
<property name="vscrollbar_policy">automatic</property> 
<child> 
<object class="GtkVBox" id="vbox2"> 
<property name="visible">True</property> 
<property name="orientation">vertical</property> 
<child> 
<object class="GtkHBox" id="hbox2"> 
<property name="visible">True</property> 
<child> 
<object class="GtkButton" id="button1"> 
<property name="label" translatable="yes">gtk-add</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
<property name="image_position">top</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button2"> 
<property name="label" translatable="yes">gtk-refresh</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button3"> 
<property name="label" translatable="yes">gtk-find</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="position">2</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button4"> 
<property name="label" translatable="yes">Statistics</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_underline">True</property> 
</object> 
<packing> 
<property name="position">3</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button5"> 
<property name="label" translatable="yes">Normalize</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="xalign">0.44999998807907104</property> 
<property name="yalign">0.44999998807907104</property> 
</object> 
<packing> 
<property name="position">4</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button10"> 
<property name="label" translatable="yes">gtk-edit</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="position">5</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="expand">False</property> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkHBox" id="hbox3"> 
<property name="visible">True</property> 
<child> 
<object class="GtkButton" id="button6"> 
<property name="label" translatable="yes">gtk-open</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button7"> 
<property name="label" translatable="yes">gtk-save</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button8"> 
<property name="label" translatable="yes">gtk-delete</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="position">2</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button11"> 
<property name="label" translatable="yes">Raise HL</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
</object> 
<packing> 
<property name="position">3</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button9"> 
<property name="label" translatable="yes">gtk-quit</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="position">4</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="expand">False</property> 
<property name="position">1</property> 
</packing> 
</child> 
<child> 
<object class="GtkTextView" id="textview1"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="buffer">textbuffer1</property> 
</object> 
<packing> 
<property name="position">2</property> 
</packing> 
</child> 
<child> 
<object class="GtkStatusbar" id="statusbar1"> 
<property name="visible">True</property> 
<property name="spacing">2</property> 
<child> 
<object class="GtkLabel" id="label1"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">Mazen Sharkawy</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkLabel" id="label2"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">Shorouk Assem</property> 
</object> 
<packing> 
<property name="position">2</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="expand">False</property> 
<property name="position">3</property> 
</packing> 
</child> 
</object> 
</child> 
</object> 
</child> 
</object> 
<object class="GtkDialog" id="dialog1"> 
<property name="border_width">5</property> 
<property name="type_hint">normal</property> 
<property name="has_separator">False</property> 
<child internal-child="vbox"> 
<object class="GtkVBox" id="dialog-vbox1"> 
<property name="visible">True</property> 
<property name="orientation">vertical</property> 
<property name="spacing">2</property> 
<child> 
<object class="GtkVBox" id="vbox1"> 
<property name="visible">True</property> 
<property name="orientation">vertical</property> 
<child> 
<object class="GtkHBox" id="hbox1"> 
<property name="visible">True</property> 
<child> 
<object class="GtkLabel" id="label1"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">ID</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkEntry" id="entry1"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="invisible_char">●</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkHBox" id="hbox2"> 
<property name="visible">True</property> 
<child> 
<object class="GtkLabel" id="label2"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">Name</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkEntry" id="entry2"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="invisible_char">●</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
<child> 
<object class="GtkHBox" id="hbox3"> 
<property name="visible">True</property> 
<child> 
<object class="GtkLabel" id="label3"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">GPA</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkEntry" id="entry3"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="invisible_char">●</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="position">2</property> 
</packing> 
</child> 
<child> 
<object class="GtkHBox" id="hbox4"> 
<property name="visible">True</property> 
<child> 
<object class="GtkLabel" id="label4"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">E-mail</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkEntry" id="entry4"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="invisible_char">●</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="position">3</property> 
</packing> 
</child> 
<child> 
<object class="GtkHBox" id="hbox6"> 
<property name="visible">True</property> 
<child> 
<object class="GtkLabel" id="label5"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">Mobile</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkEntry" id="entry5"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="invisible_char">●</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="position">4</property> 
</packing> 
</child> 
<child> 
<object class="GtkHBox" id="hbox7"> 
<property name="visible">True</property> 
<child> 
<object class="GtkLabel" id="label6"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">Age</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkEntry" id="entry6"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="invisible_char">●</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="position">5</property> 
</packing> 
</child> 
<child> 
<object class="GtkHBox" id="hbox8"> 
<property name="visible">True</property> 
<child> 
<object class="GtkLabel" id="label7"> 
<property name="visible">True</property> 
<property name="label" translatable="yes">City</property> 
</object> 
<packing> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkEntry" id="entry7"> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="invisible_char">●</property> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="position">6</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="position">1</property> 
</packing> 
</child> 
<child internal-child="action_area"> 
<object class="GtkHButtonBox" id="dialog-action_area1"> 
<property name="visible">True</property> 
<property name="layout_style">end</property> 
<child> 
<object class="GtkButton" id="button2"> 
<property name="label" translatable="yes">gtk-cancel</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="expand">False</property> 
<property name="fill">False</property> 
<property name="position">0</property> 
</packing> 
</child> 
<child> 
<object class="GtkButton" id="button1"> 
<property name="label" translatable="yes">gtk-save</property> 
<property name="visible">True</property> 
<property name="can_focus">True</property> 
<property name="receives_default">True</property> 
<property name="use_stock">True</property> 
</object> 
<packing> 
<property name="expand">False</property> 
<property name="fill">False</property> 
<property name="position">1</property> 
</packing> 
</child> 
</object> 
<packing> 
<property name="expand">False</property> 
<property name="pack_type">end</property> 
<property name="position">0</property> 
</packing> 
</child> 
</object> 
</child> 
<action-widgets> 
<action-widget response="0">button2</action-widget> 
<action-widget response="0">button1</action-widget> 
</action-widgets> 
</object> 
<object class="GtkTextBuffer" id="textbuffer1"> 
<property name="text" translatable="yes">shit happens</property> 
</object> 
</interface> 
+0

请显示更多代码。您发布的代码段没有任何问题;该错误在别处。 – andlabs

+0

@andlabs我添加了整个代码。 –

回答

0

当你调用g_object_unref(builder);,你说你有没有使用builder了意向。它类似于说free(builder),除了它使用GObject的引用计数,这是更复杂,并超出了这个答案的范围。重点是:您在拨打g_object_unref()后仍然试图使用builder,并且失败。在你的情况下,它确实如此,所以textview1变量永远不会引用你的文本视图,所以GtkTextBuffer操作不起作用。从你的代码中删除g_object_unref()行,并且一切都应该工作。

+0

我确实删除了它,但问题仍然存在。没有改变。 –

+0

在这种情况下,请同时显示您的glade文件。 – andlabs

+0

添加了沼地文件 –