以下代码可用于从Glade项目中获取小部件并进入Gtk :: Window类:
int main(int argc, char *argv[]) {
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
auto refBuilder = Gtk::Builder::create();
refBuilder->add_from_file("./Glade/First UI/MainWindow.glade");
gladeWindow* test = nullptr; //Gtk::Window
refBuilder->get_widget_derived("l_Window", test);
app->run(*test);
delete test;
return 0;
}
在gladeWindow是我在另一个文件上声明的Gtk :: Window类的地方,该类的构造函数如下:
gladeWindow::gladeWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
: Gtk::Window(cobject) {
//..omitted for simplicity
}
如gtkmm文档中所述,它必须具有一个C对象作为参数。这没有问题,但是我希望将GladeWindow类从Gtk :: Window更改为Gtk :: Application。 因此,我提出了以下建议:
int main(int argc, char *argv[]) {
auto refBuilder = Gtk::Builder::create();
refBuilder->add_from_file("./Glade/First UI/MainWindow.glade");
auto app = gladeWindow::create(); //Gtk::Application gladeWindow
return app->run(argc, argv);
}
我没有编译错误,但是我可以肯定这不是解决问题的方法,但是所有文档和示例都是使用Gtk :: Window而不是Application来完成的,所以我的两个问题是: 1.我想做的是可能的吗 2.如果是这样,我应该怎么做?
最后,如果不可能的话,我将返回到初始代码,找到解决方法以隐藏主窗口并显示其他窗口,但是我想看看是否有更多知识的人可以提供帮助。
谢谢!