Re: Determining widget type

Hi Phil,

On 28/3/20 9:34, Phil Wolff <adiabat centurylink net> wrote:
I want to modify the primary message widget so I can select and copy the 

 ??? Gtk::Box* pBox = pDialog->get_content_area ();
 ??? std::vector<Gtk::Widget* > v = pBox->get_children ();
 ??? Glib::ustring str = ((Gtk::Label*)v[0])->get_label ();

This fails: Gtk-CRITICAL: 08:51:12.080: gtk_label_get_label: assertion 
'GTK_IS_LABEL (label)' failed

So the primary message widget isn't a Gtk::Label. How do I determine 
what it is?

Dynamic cast should do the job:

You can also use the *typeinfo* library as follows:

#include <typeinfo>

std::unique_ptr<Foo> foo( new Foo() );
std::string str = typeid(foo).name();
std::cout << str << std::endl;

Even though you should filter the outputs of special characters like :: <> and so.
In this concrete case, the program will throw a bizarre output like this:


On the other hand, if you have access to the *boost* library, you'll be able to get a pretty name. Read here at the end of the post:

But i recommend you to pay attention to the dependencies of your project.

Hope this helps,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]