【问题标题】:Glade/Gtk Tooltip does not appearGlade/Gtk 工具提示不出现
【发布时间】:2020-11-07 10:34:40
【问题描述】:

我正在努力学习 Glade/Gtk。本教程https://youtu.be/g-KDOH_uqPk 非常有用,它会生成一个带有按钮和标签的小窗口。将鼠标悬停在按钮或标签上不会导致工具提示出现。这是使用 gtk+-3.0 构建的。

这是在 Linux Mint 19.3 上。有关如何调试此问题的任何建议?

part1.c

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#+
#+     Glade / Gtk Programming
#+
#+     Copyright (C) 2019 by Kevin C. O'Kane
#+
#+     Kevin C. O'Kane
#+     kc.okane@gmail.com
#+     https://www.cs.uni.edu/~okane
#+     http://threadsafebooks.com/
#+
#+ This program is free software; you can redistribute it and/or modify
#+ it under the terms of the GNU General Public License as published by
#+ the Free Software Foundation; either version 2 of the License, or
#+ (at your option) any later version.
#+
#+ This program is distributed in the hope that it will be useful,
#+ but WITHOUT ANY WARRANTY; without even the implied warranty of
#+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#+ GNU General Public License for more details.
#+
#+ You should have received a copy of the GNU General Public License
#+ along with this program; if not, write to the Free Software
#+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#+
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include <math.h>
#include <ctype.h>

// Make them global

GtkWidget   *window;
GtkWidget   *fixed1;
GtkWidget   *button1;
GtkWidget   *label1;
GtkBuilder  *builder; 

int main(int argc, char *argv[]) {

gtk_init(&argc, &argv); // init Gtk

//---------------------------------------------------------------------
// establish contact with xml code used to adjust widget settings
//---------------------------------------------------------------------

builder = gtk_builder_new_from_file ("part1.glade");

window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));

g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

gtk_builder_connect_signals(builder, NULL);

fixed1 = GTK_WIDGET(gtk_builder_get_object(builder, "fixed1"));
button1 = GTK_WIDGET(gtk_builder_get_object(builder, "button1"));
label1 = GTK_WIDGET(gtk_builder_get_object(builder, "label1"));

gtk_widget_show(window);

gtk_main();

return EXIT_SUCCESS;
}

void on_button1_clicked (GtkButton *b) {
    gtk_label_set_text (GTK_LABEL(label1), (const gchar* ) "Hello World");
}

part1.glade

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkWindow" id="window">
    <property name="can_focus">False</property>
    <child>
      <placeholder/>
    </child>
    <child>
      <object class="GtkFixed" id="fixed1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <child>
          <object class="GtkButton" id="button1">
            <property name="label" translatable="yes">May I help you?</property>
            <property name="height_request">50</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="tooltip_text" translatable="yes">Click Me!</property>
            <signal name="clicked" handler="on_button1_clicked" swapped="no"/>
          </object>
          <packing>
            <property name="x">93</property>
            <property name="y">43</property>
          </packing>
        </child>
        <child>
          <object class="GtkLabel" id="label1">
            <property name="width_request">165</property>
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="tooltip_text" translatable="yes">I am a label hiding here.</property>
            <attributes>
              <attribute name="font-desc" value="Sans Bold Italic 20"/>
              <attribute name="foreground" value="#efef29292929"/>
            </attributes>
          </object>
          <packing>
            <property name="x">340</property>
            <property name="y">307</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

compile.script

#!/bin/bash

gcc -Wno-format -o part1-bin part1.c -Wno-deprecated-declarations -Wno-format-security -lm `pkg-config --cflags --libs gtk+-3.0` -export-dynamic

【问题讨论】:

    标签: c tooltip gtk3 glade


    【解决方案1】:

    尝试将&lt;property name="has_tooltip"&gt;True&lt;/property&gt; 添加到相关小部件。它对我有用,虽然我使用 GTK2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多