什么`类HelloWorld:public Gtk :: Window`是什么意思?

时间:2010-12-18 14:37:21

标签: c++ class

我正在关注发现here的Gtk“Hello World”教程,并且我在类声明中遇到了一条我从未见过的线路(我只是学习编程为几个月了),我想知道是否有人可以向我解释。该行是

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

3 个答案:

答案 0 :(得分:6)

这意味着HelloWorld派生自Gtk::Window,因此它会继承其行为。

HelloWorld表示Gtk窗口,因此从Gtk的窗口类派生它是很自然的。它的构造函数可能会向窗口添加一个按钮(实际窗口由父类构造函数创建,在创建HelloWorld的新实例时自动调用...)并连接信号处理程序({{1} })到窗口。

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

答案 1 :(得分:0)

  

class HelloWorld : public Gtk::Window

这意味着类HelloWorldWindow命名空间内定义的类Gtk中公开derivedGtk::Window是该类的完全限定名称。

答案 2 :(得分:0)

我只是想指出你应该使用gtkmm的3.0分支,或者你应该使用教程的稳定分支。link text

gtkmm的3.0分支仍在开发中,你应该偶尔会有一些“惊喜”。