|
To find out what type of signal handler you can connect to a signal, you can
look it up in the reference documentation or the header file. Here's an example of a signal declaration you
might see in the gtkmm headers:
Glib::SignalProxy1<bool, GtkDirectionType> signal_focus()
Other than the signal's name (focus), two things are
important to note here: the number following the word SignalProxy at
the beginning (1, in this case), and the types in the list
(bool and GtkDirectionType). The number indicates how many
arguments the signal handler should have; the first type, bool,
is the type that the signal handler should return; and the next type,
GtkDirectionType, is the type of this signal's first, and only,
argument. By looking at the reference documentation, you can see the names of the arguments too.
The same principles apply for signals which have more
arguments. Here's one with three (taken from
<gtkmm/editable.h>):
Glib::SignalProxy3<void, const Glib::ustring&, int, int*> signal_insert_text()
It follows the same form. The
number 3 at the end of the type's name indicates that our signal handler
will need three arguments. The first type in the type list is
void, so that should be our signal handler's return type. The
following three types are the argument types, in order. Our signal handler's prototype could look like this:
void on_insert_text(const Glib::ustring& text, int length, int* position);
|