wxWigets 无法从 wxGridSizer 内部传递事件(或任何内容),如果有面板或 wxScrolledWind
wxWigets fails to pass events (or anything) from inside a wxGridSizer if there is a panel or wxScrolledWindow
在wxWidgets 3.0.4中,使用Visual-C++ 2010 Express编译。在主框架中,如果我直接创建一个 wxGridSizer 并添加到大小器中,它可以正常工作,但如果相反 wxBoxSizer -> wxScrolledWindow -> wxGridSizer 它不会与内部的任何内容交互,包括事件。
这一切都始于 wxBoxSizer 中的一个面板,您可以根据需要插入任意数量的面板(在您看到需要多少列/行之前)。这个想法是让wxScrolledWindow照顾,如果不适合一个屏幕。 我尝试了很多很多东西,并在网上寻找。为了简化并尽量减少显示行为,我将在一个框架内显示代码(带有我不显示的菜单和菜单栏以指向问题),该框架添加一个复选框,这是我能想到的最简单的事情。没有连接,没有复选框的任何内容。没有 wxScrolledWindow,你可以检查它,使用 wxScrolledWindow,你不能。 我尝试过使用面板而不是wxScrolledWindow,带有事件,具有更多内容。和相同的行为。 知道吗?提前谢谢你。
工程:
grid = new wxGridSizer( 3, 2, 0, 0 ); //declared in the class
wxCheckBox *prueba_cbox = new wxCheckBox( this, wxID_ANY, wxT("Check Me!"), wxDefaultPosition, wxDefaultSize, 0 );
grid->Add( prueba_cbox, 0, wxALL, 5 );
grid->Fit(this);
this->SetSizer(grid);
this->Layout();
this->Centre( wxBOTH );
不工作:
misizer = new wxBoxSizer(wxHORIZONTAL);
wxScrolledWindow* miscroll = new wxScrolledWindow(this, wxID_ANY);
miscroll->SetScrollRate( 0, 16 );
misizer->Add(miscroll, 1, wxALL | wxEXPAND, 0);
grid = new wxGridSizer( 3, 2, 0, 0 );
wxCheckBox *prueba_cbox = new wxCheckBox( this, wxID_ANY, wxT("Check Me!"), wxDefaultPosition, wxDefaultSize, 0 );
grid->Add( prueba_cbox, 0, wxALL, 5 );
grid->Fit( miscroll );
miscroll->SetSizer( grid );
misizer->Fit(this);
this->SetSizer( misizer );
misizer->Layout();
this->Layout();
this->Centre( wxBOTH );
更多, 在: "misizer->Add(miscroll, 1, wxALL |wxEXPAND, 0);">
取决于边界,有 10 个或更多作品,有 5 个或更少不起作用。在这个简单的例子中;当实际将面板放入内部时,即使边框为 120,事件也不起作用。
AFAIU 您希望具有以下布局:
wxFrame
->wxBoxSizer
->wxScrolledWindow
->wxGridSizer
->wxCheckBox
到目前为止,wxGridSizer
没有错,但prueba_cbox
的父级应该miscroll
而不是this
。
wxCheckBox *prueba_cbox = new wxCheckBox( this, wxID_ANY, wxT("Check Me!"), wxDefaultPosition, wxDefaultSize, 0 );
应该是 miscroll 的孩子,而不是这个(框架)的孩子。
谢谢(很抱歉这个愚蠢的问题)
- 是否有任何内置的哈希图函数来处理 c++ 中的值输入?
- std::任何只用于移动的模板,其中副本ctor内的static_assert等于编译错误,但为什么
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- "... already defined in *.obj"但我没有在同一范围内两次定义任何变量
- C++ 中是否有任何内置阶乘函数?
- 如何在C++中接收任何类型的函数参数并获取函数内传递变量的类型?
- 是否有任何内置函数可以告诉编译器分支是否可预测
- 调用向量内的函数指针不执行任何操作
- 是否有任何挂钩接口在编译时间内更换功能
- 如何检查copy_if是否返回使用ostream_iterator范围内的任何内容
- 我需要在C /C#中使用图形.我可以使用任何内置的C /C#库
- 是否有任何内置类可以处理C 中的大整数值
- c ++中是否有任何内置功能可以在计划的时间运行任务
- 是否有任何内置的 UTF 在 c++ 在窗口中
- 在VC++2010中执行任何内置的ARRAY函数
- C++:如何在不使用任何内置函数的情况下将字符串转换为整数
- 是否有任何内置的CUDA函数允许CUDA内核向主机代码报告错误?
- 我如何在常数时间(O(1))内获得字母表(1-26)中字符的数值/位置,而不使用任何内置方法或函数
- C++中的任何内置哈希方法
- c++库中的任何内置夹子方法