【问题标题】:wxWidgets Buttons ResizewxWidgets 按钮调整大小
【发布时间】:2020-11-19 13:50:12
【问题描述】:

对小部件非常陌生,但我尝试过自己玩,似乎无法更改我创建的按钮的大小。

BasicFrame::BasicFrame(const wxChar *title, int xpos, int ypos, int width, int height)
    : wxFrame((wxFrame*)NULL, -1, title, wxPoint(xpos, ypos), wxSize(width, height))
{
    HelloWorld = new wxButton(this, BUTTON_Hello, _T("Hello World"),
                    // shows a button on this window
                    wxPoint(70,70), wxSize(30,30), wxBU_EXACTFIT); // with the text "hello World"
}

HelloWorld 是一个 wxButton 指针。按钮保持与窗口相同的大小。

为什么我不能通过该部分更改按钮的大小:

wxSize(30,30)

谢谢

【问题讨论】:

  • 除非您有特殊需要,否则请始终使用 sizers。也强烈推荐wxFormBuilder软件。

标签: c++ wxwidgets


【解决方案1】:

作为explained in the documentation,如果顶层窗口只有一个子窗口,它将调整大小以填充整个窗口客户区,因为这几乎总是您想要发生的。

如果您确实想要这个,您可以通过各种方式解决它,例如通过创建另一个控件(甚至是不可见的控件,例如带有空标签的wxStaticText),覆盖Layout() 以不在您的BasicFrame 中执行任何操作,或者通常最好的方法是创建一个wxPanel 作为唯一的框架子项然后将所有其他控件创建为面板的子项。

在任何情况下,正如评论中已经提到的,对窗口使用硬编码大小几乎总是一个坏主意。使用以像素为单位的硬编码大小(而不是对话单元或与设备无关的像素)总是是个坏主意。

【讨论】:

  • 在处理传递给基于 wxWindow 的控件的位置和大小时使用 DIP 是否有意义?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2016-05-27
  • 2014-05-22
  • 1970-01-01
  • 2019-11-20
相关资源
最近更新 更多