除了构造函数参数之外,我可以更改 FL_Window 的标题吗?

Posted

技术标签:

【中文标题】除了构造函数参数之外,我可以更改 FL_Window 的标题吗?【英文标题】:Can I change a FL_Window's caption other than in a constructor argument? 【发布时间】:2012-01-10 15:09:48 【问题描述】:
MainWindow::MainWindow(int w, int h, const string& c)
: Fl_Window(w, h, c.c_str()) // Don't call constructor over here

    script.load_file(WIN_CONFIG_SCRIPT);

    int width = script.get_global_int("width");
    int height = script.get_global_int("height");

    const char* caption = script.get_global_string("caption").c_str();

    /** CALL CONSTRUCTOR NOW **/

    //NOTE: I don't know a way to change an FLTK Fl_Window's Caption after 
    //initialising it.

    Toolbar* toolbar = new Toolbar(0, 0, this->w(),30);
    toolbar->add_button("Hello");
    toolbar->add_button("World!");

    end();

如何在构造函数内部初始化基类?或者,我如何更改 FLTK Fl_Window 的标题初始化它?有什么其他方法可以摆脱这种混乱吗?

【问题讨论】:

【参考方案1】:

如何在构造函数中初始化基类?

你可能不会。

实例的基础部分必须在实例的派生部分或其任何成员之前初始化。


如何在初始化后更改 FLTK Fl_Window 的标题?

The documentation说你可以打电话:

label("my caption")

这有什么问题?


还有什么办法可以摆脱这种混乱吗?

没有。


另外,您应该升级到 FLTK 2。

【讨论】:

(+1) 谢谢。这些天你帮了我很多,你也回答了我最近提出的 3 到 4 个问题,再次感谢。 不幸的是,FLTK 2 是一个死分支。开发人员现在专注于 FLTK 3。所以我建议他使用 FLTK 1.3 或 FLTK 3。FLTK 2 仍然(恕我直言)领先于两者,但逐渐将 FLTK 2 中的所有好东西移植到 FLTK 3。 @Mr.Anubis:一个是新的。另一个不是。

以上是关于除了构造函数参数之外,我可以更改 FL_Window 的标题吗?的主要内容,如果未能解决你的问题,请参考以下文章

除了 onCreate 方法之外,无法更改视图的可见性

使用 C/C++ 中的派生类成员变量将参数传递给 Base 构造函数

可变参数模板

用于 ASP.NET MVC 的没有 DI 容器的控制器的构造函数参数

除了锁定的对象之外,我可以将对象的更改保存到另一个 TR 吗?

Matlab在构造函数中无法更改类的参数