我正在关注这里发现的Gtk"Hello World"教程,并且我在一个我以前从未见过的课堂声明中遇到了一句话(我现在只学习了几个月的编程),而我我想知道是否有人可以向我解释.这条线是
class HelloWorld : public Gtk::Window
Run Code Online (Sandbox Code Playgroud)
我知道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
Run Code Online (Sandbox Code Playgroud)
它意味着HelloWorld派生自Gtk::Window,所以它继承了它的行为.
HelloWorld代表一个Gtk窗口,所以从Gtk的窗口类派生它是很自然的.它的构造函数可能会向窗口添加一个按钮(实际窗口由父类构造函数创建,在创建新实例时自动调用HelloWorld...)并将信号处理程序(on_button_clicked)连接到窗口.
你可以Gtk::Window通过一个实例来调用所有的方法HelloWorld.反过来,HelloWorld可以覆盖虚拟方法Gtk::Window来改变其行为.