Fl_Window子类不起作用

时间:2016-05-20 17:18:19

标签: c++ user-interface fltk

如上所述,我正在尝试使用非常简单的FLTK 1.3.3应用程序。 但是,即使只有一个简单的Fl_Window和1个Fl_Button,似乎没有任何作用。有人可以帮忙吗?

class MainEditorWindow : public Fl_Window
{
public:
    MainEditorWindow(int _width, int _height, std::string _title);
    ~MainEditorWindow();

    virtual void draw();
    virtual int handle(int _event);
private:
    Fl_Button* m_btnExit;
};

这是实施

MainEditorWindow::~MainEditorWindow()
{

}

int MainEditorWindow::handle(int _event)
{
    return 1;
}

void MainEditorWindow::draw()
{
    m_btnExit->redraw();
}

MainEditorWindow::MainEditorWindow(int _width, int _height, std::string _title) : Fl_Window(_width, _height, _title.c_str())
{
    this->begin();
    m_btnExit = new Fl_Button(0, 0, 40, 40, "EXIT");
    m_btnExit->color(FL_RED);
    this->color(FL_WHITE);
    this->end();
}

但是当像这样简单地运行应用程序时:

int main(int argc, char** argv)
{
    MainEditorWindow* mw = new MainEditorWindow(800, 600, "SHIP Editor");
    mw->show(argc,argv);
    return Fl::run();
}

窗口显示正常,可调整大小的可移动等,正在调用draw() - 函数以及所有这些。但是窗口本身只是空白。它根本没有显示任何内容,尤其是Fl_Button。谁能告诉我为什么会这样?据我所知,我的代码应该没有什么特别的错误。

2 个答案:

答案 0 :(得分:1)

你需要调用Fl_Window :: draw()

    int MainEditorWindow::handle(int _event)
    {
      //return 1;
      return(Fl_Window::handle(_event));
    }

也许你想按钮也可点击

{{1}}

答案 1 :(得分:0)

MainEditorWindow构造函数中尝试此操作:

MainEditorWindow(int _width, int _height, const std::string& _title) 
        : Fl_Window(_width, _height, _title.c_str()) {
    // begin grouped GUI object creation
    Fl_Group::begin();
    // alter x,y coords of button as necessary
    m_btnExit = new Fl_Button(0,0,40,40,"EXIT");
    m_btnExit->color(FL_RED);
    // end grouped GUI object creation
    Fl_Group::end();
    // defines resizable widget for group
    Fl_Group::resizable(this);
    this->color(FL_WHITE);
    // display window
    Fl_Window::show();
}

然后在主要:

int main(int argc, char** argv) {
    MainEditorWindow mw(800, 600, "SHIP Editor");
    return Fl::run();
}

这里我们将按钮添加到组中,然后在构造函数中调用Fl_Window::show()来显示它。

请注意,mw无需MainEditorWindow指向main的指针。

相关问题