I'm trying to run an simple Gtkmm program but I'm failing to get the content to the GlibRef. Here's a sample code:
#include <gtkmm-3.0/gtkmm.h>
int main(int argc, char** argv)
{
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create (argc, argv, "org.me.myprogram");
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("gladefile.glade");
Glib::RefPtr<Gtk::ApplicationWindow> myMainWindow= builder->get_object("myGTkApplicationWindowID");
app->run(myMainWindow, argc, argv);
return 0;
}
This gives me the following error(showing the important part):
error: no matching function for call to ‘Gtk::Application::run(Glib::RefPtr<Gtk::ApplicationWindow>&, int&, char**&)
note: no known conversion for argument 1 from ‘Glib::RefPtr<Gtk::ApplicationWindow>’ to ‘Gtk::Window&
Trying to use *myMainWindow doesn't work because this operator is not defined, the operator-> is defined but doesn't work because it goes deeper than needed, showing the following error:
error: no matching function for call to ‘Gtk::Application::run(Gtk::ApplicationWindow*, int&, char**&)’
note: no known conversion for argument 1 from ‘Gtk::ApplicationWindow*’ to ‘Gtk::Window&’
Even tried more wild things like &(myMainWindow.operator()) and *(myMainWindow.operator()), but I believe I'm missing the ideia of this smart pointer. So how to make it work? AFAIK GTKMM should work very easily with Glib::RefPtr.
I tried out your code also testing various referencing and de-referencing of the "myMainWindow" object. That led me to review the "gtkmm 3" documentation as it pertains to using widgets from a glade builder file. In their examples they seemed to reference widgets instead of objects. With that in mind, I revised your code as such.
Defining the application window as a GTK widget and then using the "builder->get_widget" function seemed to retrieve the appropriate widget/object that could be referenced in the "app->run" call. The program did then compile and produced a window.
I am not sure how much you are committed to object definitions versus widget definitions, but you might want to reference the following link I used to make the above revisions.
"http://transit.iut2.upmf-grenoble.fr/doc/gtkmm-3.0/tutorial/html/chapter-builder.html"
I hope that helps.
Regards.