如何解决Glade / Gtk工具提示未出现
我正在尝试学习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
解决方法
尝试将<property name="has_tooltip">True</property>
添加到相关小部件中。尽管我使用GTK2,但它对我有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。