У меня есть макет Glade, скомпилированный в gresource, который я устанавливаю для объекта Gtk :: Window вручную в моем конструкторе.Упрощенная версия кода, который я сейчас использую, будет выглядеть так:
MyClass::MyClass()
{
Gtk::Window *window;
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_resource("/layouts/mywindow.glade");
builder->get_widget("myWindow", window);
window->show();
}
* Примечание: это не мой настоящий код, это просто очень упрощенная версия того, что я делаю.
Я бы хотел использовать Gtk :: Window в качестве базового класса и просто "запустить" мой класс, например:
#include "myclass.h"
int main(int argc, char *argv[])
{
Gtk::Main kit(argc, argv);
MyClass helloworld;
kit.run(loginScreen);
return 0;
}
Но я не могу понять, как использовать конструктор для вставки /назначить макет базовому классу Gtk :: Window.Я вполне уверен, что мне нужно использовать get_widget_derived, но я не могу понять, как использовать его в конструкторе (... или вы не можете использовать его в конструкторе?).Например, изменив определение моего класса на:
class MyClass : public Gtk::Window
{
public:
MyClass(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& refBuilder);
}
что я должен добавить в свой конструктор, чтобы поместить макет из компоновщика в базовую Gtk :: Window?
MyClass::MyClass(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& refBuilder)
: Gtk::Window(cobject)
{
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_resource("/layouts/mywindow.glade");
// What goes here?
// something like?: builder->get_widget_derived("myWindow", ???);
}