我正在关注发现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
答案 0 :(得分:6)
这意味着HelloWorld
派生自Gtk::Window
,因此它会继承其行为。
HelloWorld
表示Gtk窗口,因此从Gtk的窗口类派生它是很自然的。它的构造函数可能会向窗口添加一个按钮(实际窗口由父类构造函数创建,在创建HelloWorld
的新实例时自动调用...)并连接信号处理程序({{1} })到窗口。
您可以通过on_button_clicked
的实例调用所有Gtk::Window
的方法。反过来,HelloWorld
可以覆盖HelloWorld
的虚拟方法来改变其行为。
答案 1 :(得分:0)
class HelloWorld : public Gtk::Window
这意味着类HelloWorld
在Window
命名空间内定义的类Gtk
中公开derived。 Gtk::Window
是该类的完全限定名称。
答案 2 :(得分:0)
我只是想指出你应该使用gtkmm的3.0分支,或者你应该使用教程的稳定分支。link text
gtkmm的3.0分支仍在开发中,你应该偶尔会有一些“惊喜”。