我正在遵循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
的虚拟方法来更改其行为。