我正在遵循Gtk的“Hello World”教程找到here,并且在从未声明过的类声明中遇到了一行(我现在才学习编程几个月),而我想知道是否有人可以向我解释一下。这条线是

class HelloWorld : public Gtk::Window

我知道class HelloWorld在做什么,但是我以前从未看过public Gtk::Window。提供完整的头文件以供引用。
#ifndef GTKMM_EXAMPLE_HELLOWORLD_H
#define GTKMM_EXAMPLE_HELLOWORLD_H

#include <gtkmm/button.h>
#include <gtkmm/window.h>

class HelloWorld : public Gtk::Window
{

public:
  HelloWorld();
  virtual ~HelloWorld();

protected:
  //Signal handlers:
  void on_button_clicked();

  //Member widgets:
  Gtk::Button m_button;
};

#endif // GTKMM_EXAMPLE_HELLOWORLD_H

最佳答案

这意味着HelloWorld源自Gtk::Window,因此它继承了其行为。
HelloWorld代表Gtk窗口,因此让它从Gtk的窗口类派生是很自然的。它的构造函数可能会向窗口添加一个按钮(实际的窗口是由父类构造函数创建的,当创建新的HelloWorld实例时会自动调用该窗口……),并将信号处理程序(on_button_clicked)连接到窗口。

您可以通过Gtk::Window的实例调用HelloWorld的所有方法。反过来,HelloWorld可以覆盖Gtk::Window的虚拟方法来更改其行为。

07-25 22:12
查看更多