添加到内部 wxBoxSizer 的垫片在 wxWidgets 中不起作用
Spacer added to inner wxBoxSizer doesn't work in wxWidgets
我有一个内部wxBoxSizer内部的间隔符问题。下面是示例代码:
class Frame : public wxFrame
{
public:
Frame()
: wxFrame(nullptr,
wxID_ANY,
wxEmptyString,
wxDefaultPosition,
wxSize(600, 200))
{
wxPanel* panel = new wxPanel(this);
// Some OUTER SIZER
wxBoxSizer* mainS = new wxBoxSizer(wxVERTICAL);
// INNER HORIZONTAL SIZER
wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
wxStaticText* text = new wxStaticText(panel, wxID_ANY, wxT("Some Text"));
sizer->Add(text, 0, wxALL, 5);
wxComboBox* comboBox = new wxComboBox(panel, wxID_ANY, wxT("Combo"));
sizer->Add(comboBox, 0, wxALL, 5);
// SPACER
sizer->Add(0, 0, 1, wxEXPAND, 5);
wxButton* button = new wxButton(panel, wxID_ANY, wxT("Some button"));
sizer->Add(button, 0, wxALL, 5);
mainS->Add(sizer, 0, wxALL, 5);
panel->SetSizer(mainS);
// PANEL SIZER
wxBoxSizer* panelSizer = new wxBoxSizer(wxHORIZONTAL);
panelSizer->Add(panel, 1, wxEXPAND, 5);
SetSizer(panelSizer);
Layout();
Centre(wxBOTH);
}
};
class WxguiApp
: public wxApp
{
public:
bool OnInit() override
{
Frame* w = new Frame();
w->Show();
SetTopWindow(w);
return true;
}
};
IMPLEMENT_APP(WxguiApp);
如果我移除外部尺寸垫片开始工作良好。是我的代码有bug吗?或者可能是wxWidgets的问题?
我找不到答案,也许有人帮助吗?wxWidgets 3.0.2
你的内部大小(sizer
)不会在水平方向上扩展,因为你没有告诉它的父大小(mainS
)在添加它时这样做,所以你的间距将始终是0像素宽,这是它的初始和最小宽度。
要解决这个问题,您只需要将mainS->Add(sizer, 0, wxALL, 5)
行更改为使用wxALL | wxEXPAND
。
另外,我强烈建议您使用wxSizerFlags
而不是上面所示的神秘语法。而且,最后也是最不重要的,但仍然值得一提的是,更喜欢使用更具可读性的AddStretchSpacer()
而不是令人困惑的Add(0, 0, 1, wxEXPAND, 5)
调用(它令人困惑,因为扩展分隔符不会做任何事情,并且在没有任何边界标志的情况下不会考虑边界大小)。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 绑定wxEVT_CHAR_HOOK在 wxWidgets 3.1.2 中不起作用
- 添加到内部 wxBoxSizer 的垫片在 wxWidgets 中不起作用