【发布时间】:2014-08-06 16:53:49
【问题描述】:
我目前正在学习在 Microsoft Visual Studio C++ 中使用 wxWidgets,并且我认为我已经完全理解了 Sizer 的概念。但是,我似乎无法让他们在调整大小时按照我希望的方式行事。我正在关注一个教程(我似乎放错地方的链接,但它非常简单),旨在创建一个对话框窗口,其中包含一个可扩展的文本框和它下面的两个按钮,它们应该保持大致居中。我的窗口代码如下,在我的对话框窗口的构造函数中找到:
vertSizer = new wxBoxSizer(wxVERTICAL); // Create vertical (parent) sizer, will contain text box and child sizer
vertSizer->Add(
new wxTextCtrl(this, -1, "My text", wxDefaultPosition, wxSize(100,80), wxTE_MULTILINE),
1, // vertically stretchable
wxEXPAND | wxALL, // horizontally stretchable, borders all around
10); // Add text box to parent sizer
horizSizer = new wxBoxSizer(wxHORIZONTAL); // Make child sizer, will contain buttons
wxSizerFlags ButtonFlags(1); // Make controls stretch hoizontally (to cover entire sizer area)
ButtonFlags.Expand().Center().Border(wxALL,10); // Make controls expand vertically, add border
horizSizer->Add(new wxButton(this,wxID_OK,"OK"), ButtonFlags); // Add first button
horizSizer->Add(new wxButton(this, ID_Cancel,"Cancel"), ButtonFlags); // Add second button
vertSizer->Add(horizSizer); // Add child sizer to parent sizer
SetSizerAndFit(vertSizer);
显示的窗口看起来正确(窗口顶部有一个大文本框,在其下方有两个间距适当的按钮)。但是,当调整窗口大小时,文本框会垂直和水平扩展(预期行为),但按钮保持原位,左对齐(不需要的行为)。 (我为无法发布图片而道歉;我准备了一对,但我无法发布它们,因为我的声誉如此之低。)
初始化时的格式很好,但是我会在调整大小时保持这种格式。意思是,我希望文本框下方的两个按钮保持在窗口的中间,仍然并排(尽管它们之间的距离随着窗口变大而增加是可以接受的)。或者,我希望按钮水平增大,以便每个按钮占据文本框下方区域的一半。
如果有人问过类似的问题,我深表歉意,但我在研究中没有在这个网站上找到满意的答案。
对此的任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: c++ user-interface wxwidgets