【问题标题】:use of function connect() in the constructor在构造函数中使用函数 connect()
【发布时间】:2014-09-10 11:27:54
【问题描述】:

我不明白某些类的构造函数中函数connect()的使用。我认为这是为了将事件与程序的图形部分“连接”起来,但如果我在构造函数中不使用任何连接函数,它会让我变得一样。这是我的代码的一部分,例如:

#include "VueOpenGL.h"
#include "wx/wx.h"
#include "wx/glcanvas.h"
#include "wx/progdlg.h"
using namespace std;

//Constructor of the class "VueOpenGL"

VueOpenGL::VueOpenGL(wxWindow* parent, wxSize const& taille, wxPoint const& position)
:wxGLCanvas(parent, wxID_ANY, position, taille,
 wxSUNKEN_BORDER|wxFULL_REPAINT_ON_RESIZE|WX_GL_DOUBLEBUFFER)
{
  //Events
Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(VueOpenGL::OnKeyDown));
} 

...

void VueOpenGL::OnKeyDown(wxKeyEvent& event) {
    switch(event.GetKeyCode()) {
        case WXK_LEFT:
             instructions_1;
        break;
        case WXK_RIGHT:
             instructions_2;
        break;
     }
}

(所有原型都在VueOpenGL.h中)

【问题讨论】:

  • 嗯,你有没有尝试过按下一个键时会发生什么?事件不是要在屏幕上显示内容,而是将(用户)输入传递给处理它的程序部分。
  • @datenwolf 是的,我的意思是,当我按下一个键时,一切都会发生,就像构造函数中没有任何“连接”一样。所以我的问题是:我什么时候需要使用连接?

标签: c++ events opengl wxwidgets


【解决方案1】:

你没有向我们展示一切。如果没有Connect(wxEVT_KEY_DOWN),按键事件将不会传递给您的处理程序。所以如果它仍然被调用,它必须以其他方式连接,或者你可能只是没有测试你认为你正在测试的代码(例如,在注释掉包含 Connect() 的行后重建失败并且你仍在运行旧的版本)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2018-01-31
    • 1970-01-01
    • 2017-04-01
    • 2012-06-30
    • 2014-03-24
    相关资源
    最近更新 更多