Tooltip


Object Hierarchy:

Gtk.Tooltip Gtk.Tooltip Gtk.Tooltip GLib.Object GLib.Object GLib.Object->Gtk.Tooltip

Description:

[ CCode ( type_id = "gtk_tooltip_get_type ()" ) ]
public sealed class Tooltip : Object

Basic tooltips can be realized simply by using set_tooltip_text or set_tooltip_markup without any explicit tooltip object.

When you need a tooltip with a little more fancy contents, like adding an image, or you want the tooltip to have different contents per TreeView row or cell, you will have to do a little more work:

  • Set the has_tooltip property to true, this will make GTK+ monitor the widget for motion and related events which are needed to determine when and where to show a tooltip.
  • Connect to the query_tooltip signal. This signal will be emitted when a tooltip is supposed to be shown. One of the arguments passed to the signal handler is a GtkTooltip object. This is the object that we are about to display as a tooltip, and can be manipulated in your callback using functions like set_icon. There are functions for setting the tooltip’s markup, setting an image from a named icon, or even putting in a custom widget.

    Return true from your query-tooltip handler. This causes the tooltip to be show. If you return false, it will not be shown.

In the probably rare case where you want to have even more control over the tooltip that is about to be shown, you can set your own Window which will be used as tooltip window. This works as follows:

Example: Tooltip:

public class Application : Gtk.Window {
public Application () {
// Prepare Gtk.Window:
this.title = "My Gtk.Tooltip";
this.window_position = Gtk.WindowPosition.CENTER;
this.destroy.connect (Gtk.main_quit);
this.set_default_size (350, 70);

// A VBox:
Gtk.Box box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
this.add (box);

// A simple Tooltip:
Gtk.Button button = new Gtk.Button.with_label ("Button 1");
button.set_tooltip_text ("My Tooltip");
box.add (button);

// A simple Tooltip with markup:
button = new Gtk.Button.with_label ("Button 2");
button.set_tooltip_markup ("<b>My Tooltip</b>");
box.add (button);

// A complex Tooltip:
button = new Gtk.Button.with_label ("Button 3");
button.has_tooltip = true;
box.add (button);

button.query_tooltip.connect ((x, y, keyboard_tooltip, tooltip) => {
tooltip.set_icon_from_icon_name ("document-open", Gtk.IconSize.LARGE_TOOLBAR);
tooltip.set_markup ("<b>My Tooltip</b>");
return true;
});

// A custom Tooltip:
button = new Gtk.Button.with_label ("Button 3");
button.has_tooltip = true;
box.add (button);

button.query_tooltip.connect ((x, y, keyboard_tooltip, tooltip) => {
tooltip.set_custom (new Gtk.Button.with_label ("You can't click me. :)"));
return true;
});
}

public static int main (string[] args) {
Gtk.init (ref args);

Application app = new Application ();
app.show_all ();
Gtk.main ();
return 0;
}
}

valac --pkg gtk+-3.0 Gtk.Tooltip.vala


Namespace: Gtk
Package: gtk+-3.0

Content:

Static methods:

Creation methods:

Methods:

Inherited Members: