0

我想在 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>
4

0 回答 0