我想在 GtkToolbar 中显示一个 GtkToolButton,但无论我尝试了什么,GtkToolButton 都拒绝显示。
我试图将工具提示添加到工具栏,当鼠标停在它上面时,工具提示确实出现了,所以我认为它不是工具栏没有出现。我也尝试使用搜索引擎,但返回的结果包含的信息很少。
我的错误在哪里?请帮忙!坐在这里真的很沮丧,找不到像这样简单的任务的解决方案......
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <gtk/gtk.h>
GtkWidget *window;
GtkToolItem *tool_item;
GtkWidget *toolbar;
GtkBuilder *builder;
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
builder = gtk_builder_new_from_file ("test.glade");
window = GTK_WIDGET(gtk_builder_get_object(builder, "main_window"));
if (window == NULL)
{
printf("failed to get window\n");
return 0;
}
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_builder_connect_signals(builder, NULL);
toolbar = GTK_WIDGET(gtk_builder_get_object(builder, "toolbar"));
if (toolbar == NULL)
{
printf("failed to get toolbar from glade file\n");
return -1;
}
GtkWidget *icon = gtk_image_new_from_icon_name("computer", GTK_ICON_SIZE_BUTTON);
tool_item = gtk_tool_button_new(icon, "computer");
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), tool_item, 0);
gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
gtk_widget_show(window);
gtk_main();
return EXIT_SUCCESS;
}
格莱德文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.2 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkWindow" id="main_window">
<property name="can_focus">False</property>
<child type="titlebar">
<placeholder/>
</child>
<child>
<object class="GtkFixed">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkToolbar" id="toolbar">
<property name="width_request">361</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="x">48</property>
<property name="y">17</property>
</packing>
</child>
</object>
</child>
</object>
</interface>