如何在Gtk :: Application类中使用派生的小部件

时间:2018-08-23 20:37:44

标签: c++ glade gtkmm

以下代码可用于从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.如果是这样,我应该怎么做?

最后,如果不可能的话,我将返回到初始代码,找到解决方法以隐藏主窗口并显示其他窗口,但是我想看看是否有更多知识的人可以提供帮助。

谢谢!

0 个答案:

没有答案