После создания объекта с помощью:
GtkWidget* New = gtk_button_new_with_label("new");
и задания имени виджета с помощью:
gtk_widget_set_name(New, "new");
application->get_object("new") по-прежнему возвращает ноль. Что я делаю неправильно? : ** (
application->get_object("new")
Gtk::Builder::get_object(const Glib::ustring& name) ищет объект в текстовом файле пользовательского интерфейса. Вы можете написать файл пользовательского интерфейса с Glade, https://glade.gnome.org/index.html.
Gtk::Builder::get_object(const Glib::ustring& name)
Однако, когда вы пишете
GtkWidget* New = gtk_button_new_with_label("new-name"); gtk_widget_set_name(New, "new-name");
, вы создаете метку и даете ей имя. Но метка не находится в файле пользовательского интерфейса. Так что вы не сможете найти его из своего Gtk::Builder экземпляра. Название «new-name» позволяет использовать его как «new-name» в файле CSS, поэтому вы можете изменить его тему (шрифт, цвет фона и т. Д. c).
Gtk::Builder
Это две разные вещи.