gpt4 book ai didi

c++ - wxWidgets 大小调整器 : How to get sizers to behave properly on resize

转载 作者:太空狗 更新时间:2023-10-29 21:42:45 29 4
gpt4 key购买 nike

我目前正在学习在 Microsoft Visual Studio C++ 中使用 wxWidgets,并且我认为我的脑子里全是 Sizers 的概念。但是,我似乎无法让它们在调整大小时按照我希望的方式行事。我正在关注一个教程(我似乎放错了链接,但它非常简单),它旨在创建一个对话框窗口,其中包含一个可扩展的文本框和它下面的两个按钮,它们应该大致居中。我的窗口代码如下,在我的对话框窗口的构造函数中找到:

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);

显示的窗口看起来是正确的(窗口顶部有一个大文本框,下方并排有两个间距适当的按钮)。但是,当调整窗口大小时,文本框会垂直和水平扩展(预期行为),但按钮保持原位,左对齐(不需要的行为)。 (对于无法发布图片,我深表歉意;我准备了两张图片,但我不能发布它们,因为我的名气很小。)

初始化时的格式很好,但是我会在调整大小时保持该格式。意思是,我希望文本框下方的两个按钮保持在窗口中间,仍然并排(尽管随着窗口变大,它们之间的距离增加是可以接受的)。或者,我希望按钮在水平方向上增加尺寸,以便每个按钮占据文本框下方区域的一半。

如果有人问过类似的问题,我深表歉意,但我在研究中没有在这个网站上找到满意的答案。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

您需要告诉外部框尺寸器它也应该扩展水平子尺寸器:

vertSizer->Add(horizSizer, 0, wxEXPAND);

第二个参数 0 告诉垂直 sizer 仅水平扩展子 sizer。对于框大小调整器,将 0 作为第二个参数传递并将 wxEXPAND 作为第三个参数(的一部分)传递将确保添加的子控件或大小调整器在“其他”方向上扩展,即对于垂直大小调整器,子级在水平方向上扩展而对于水平 sizer,子项会垂直扩展。

将 1 作为第二个参数传递,正如您已经从文本框中了解到的那样,将向两个方向展开。

关于c++ - wxWidgets 大小调整器 : How to get sizers to behave properly on resize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165920/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com