【问题标题】:How do I set a minimum window size in wxWidgets?如何在 wxWidgets 中设置最小窗口大小?
【发布时间】:2010-10-11 08:13:17
【问题描述】:

这是我拥有的小部件的层次结构:

Frame > wxBoxSizer > wxPanel > wxBoxSizer > wxFlexGridSizer(2 列,9 行),里面有各种表单域和按钮。

第一个BoxSizer是放置面板,第二个是围绕FlexGrid做一个边框。

一切看起来都不错,如果窗口放大,框架可以正常展开,但它也可以调整到几乎没有,隐藏所有表单元素。

如何将窗口的最小尺寸强制设置为默认情况下 FlexGridSizer 建议的尺寸(所有表单元素都可见并具有最小的可能尺寸)?

【问题讨论】:

    标签: user-interface cross-platform wxwidgets wxperl


    【解决方案1】:

    我会尝试使用wxFlexGridSizer->GetMinSize() 返回的任何内容调用wxFrame->SetMinSize(wxSize),应该可以,但未经测试。您需要注意 GetMinSize 所说的关于转换为窗口大小的内容,然后才能通过它。

    【讨论】:

      【解决方案2】:

      在你的 Frame 上使用 SetMinSize() 方法来设置最小尺寸将在框架的最小区域上设置一个限制(刚刚测试过)。一旦设置,wxWidgets 将不允许框架的大小小于指定的值。

      我会这样设置值。在构造函数中,设置框架的所有元素。最后,在您调用Layout() 方法设置所有sizer 等后,调用GetSize(int *w, int *h) 方法以获取默认布局下框架的x 和y 大小。使用这些值调用SetMinSize() 方法,将默认大小设置为框架的最小值。这将考虑到所有不同的填充和边框,以及由框架和包含的元素设置的这些。

      【讨论】:

        【解决方案3】:

        在 wxPerl 中,dagorym 的答案可以简写为 $self->SetMinSize($self->GetSize()); 在调用Layout() 之后。

        【讨论】:

          【解决方案4】:

          可能为时已晚,但此处给出的答案过于复杂,您只需调用 SetSizerAndFit(sizer) 将尺寸调整器与框架关联,设置其初始尺寸并将此尺寸设置为可接受的最小尺寸。

          【讨论】:

          • 现在你的答案还不算太晚!
          猜你喜欢
          • 2023-04-11
          • 2019-02-25
          • 2013-10-05
          • 1970-01-01
          • 1970-01-01
          • 2017-05-09
          • 2020-10-01
          • 2013-09-09
          • 2022-11-28
          相关资源
          最近更新 更多