wxSizers在wxWidgets中排列不正确
wxSizers not arranging correctly in wxWidgets
我在一个面板内有两个wxTextCtrl
和两个wxButton
。我想用尺寸尺来排列。我想将wxTextCtrl
s设置为水平,将wxButton
s设置为垂直。它似乎不起作用,这是我的代码:
wxPanel* panel = new wxPanel(this);
wxPanel* panel2 = new wxPanel(this);
wxStaticText* u = new wxStaticText(panel, wxID_ANY, "Username");
uid = new wxTextCtrl(panel, wxID_ANY);
wxStaticText* p = new wxStaticText(panel, wxID_ANY, "Password");
pass = new wxTextCtrl(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD);
wxButton* r = new wxButton(panel, 1, "Register");
wxStaticLine* line = new wxStaticLine(panel2, wxID_ANY, wxDefaultPosition, wxSize(0,15));
wxButton* l = new wxButton(panel, 2, "Login");
//wxDefaultSize, wxTE_MULTILINE | wxHSCROLL | wxTE_READONLY);
wxBoxSizer* panelSizer1 = new wxBoxSizer(wxHORIZONTAL);
panelSizer1->Add(u, wxSizerFlags().Top());
panelSizer1->Add(uid, wxSizerFlags().Top());
panelSizer1->Add(p, wxSizerFlags().Top());
panelSizer1->Add(pass, wxSizerFlags().Top());
panel->SetSizer(panelSizer1);
wxBoxSizer* panelSizer = new wxBoxSizer(wxVERTICAL);
panelSizer->Add(l, wxSizerFlags().Center());
panelSizer->Add(line, wxSizerFlags().Center());
panelSizer->Add(r, wxSizerFlags().Center());
panel->SetSizer(panelSizer);
我该怎么办?
调用panel->SetSizer()
两次,先调用panelSizer1
,然后调用panelSizer
,不会有任何用处,因为第二次调用会替换第一次调用设置的sizer。必须将sizer一个嵌入到另一个中才能实现所需的布局。
此外,还有一个提示:对于左边有标签、右边有文本控件的典型两列布局,首先使用wxFlexGridSizer而不是框大小调整器更容易。
您有两个box sizer,但您只能为面板设置一个box sizeer。根据您的要求,我认为最好添加水平分级机作为垂直分级机的第一个元素。
panelSizer1->Add(u, wxSizerFlags().Top());
panelSizer1->Add(uid, wxSizerFlags().Top());
panelSizer1->Add(p, wxSizerFlags().Top());
panelSizer1->Add(pass, wxSizerFlags().Top());
wxBoxSizer* panelSizer = new wxBoxSizer(wxVERTICAL);
panelSizer->Add(panelSizer1, wxSizerFlags().Center());
panelSizer->Add(l, wxSizerFlags().Center());
panelSizer->Add(line, wxSizerFlags().Center());
panelSizer->Add(r, wxSizerFlags().Center());
panel->SetSizer(panelSizer);
如果您在使用wxWidgets构建UI时遇到问题,请尝试使用wxformbuilder。
欢呼!!
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 如果语句逻辑不正确
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- 不正确的操作数类型 MSVC
- 数组填充了不正确的值
- 我是否不正确地集中了这些字符数组?
- 为什么除非我使用 cout,否则我的值不正确?
- 计算幂级数的数学结果不正确
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- atoi() 在应用于大型命令行参数时会产生不正确的值
- wxSizers在wxWidgets中排列不正确