【问题标题】:Must I declare own wxFrame class?我必须声明自己的 wxFrame 类吗?
【发布时间】:2019-04-16 08:50:45
【问题描述】:

我正在创建带有用户界面的简单 C++ 应用程序。我已经编写了具有所需机制的自己的类,现在我必须使用 wxWidgets 显示它的一些组件。 MyApp 包含该类的对象,但在处理事件时MyFrame 中也需要它们。如果不将指向该对象的指针传递给MyFrame 并在MyApp::OnInit 函数中实现所有内容,那会更舒服。这可能吗?

// should contain informations about game state, players, gameboard, etc
class MyApp : public wxApp {
    GameBoard gb;
    Player player;
    bool lightTheme;
public:
    virtual bool OnInit();
};
// should contain only window layout, button events, etc
class MyFrame : public wxFrame {
    GameBoard *gb;
    Player *player;
    bool *lightTheme;

    std::vector<wxStaticBitmap*> cardImages;
// some events here
    void displayImages(wxGridSizer*);
public:
    MyFrame(GameBoard*, Player*, bool*);
};

【问题讨论】:

    标签: c++ user-interface wxwidgets


    【解决方案1】:

    要回答您的标题问题,您不必声明MyFrame,只需创建并直接使用wxFrame 并使用Bind() 连接不同的事件处理程序。除了最简单的情况外,通常方便有一个 MyFrame 类集中窗口的数据和事件处理程序,但无论如何都不需要。

    如果您决定将所有内容保留在 MyApp 中,您可能会发现 wxGetApp() 对于从代码中的不同位置访问它很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多