首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetSizeHints到由wxXmlResource加载的帧

SetSizeHints到由wxXmlResource加载的帧
EN

Stack Overflow用户
提问于 2022-03-29 00:56:14
回答 1查看 33关注 0票数 0

现在我在Windows7上使用wxWidgets MSW3.0.5,xrc文件是用wxFormBuilder 3.10.1创建的。

通常,我使用这样的方法来避免wxframe比我的子控件更小:

代码语言:javascript
复制
MyFrame::MyFrame() : wxFrame( NULL, wxID_ANY, wxT("Sometitle") )
{
wxBoxSizer* frameSizer = new wxBoxSizer( wxVERTICAL );
wxPanel* panel = new wxPanel( this, wxID_ANY );
// ..
frameSizer->Add( panel, 1, wxEXPAND | wxALL, 0 );       
SetSizerAndFit( frameSizer );
Centre();
}

但是,当我使用xrc文件加载我的帧时,我使用如下方式:

代码语言:javascript
复制
MyFrame::MyFrame()
{
// used in App::OnInit()
// wxXmlResource::Get()->InitAllHandlers();
// wxXmlResource::Get()->Load( wxT("some.xrc" ) );
wxXmlResource::Get()->LoadFrame( this, NULL, wxT("MyFrame") );
// ...
Fit(); // this resize my frame to show my child controls as expected (like SetSizerAndFit does )
SetMinClientSize(GetSize()); // is this the right way?
Centre();
}

SetSizerAndFit,Fit() SetMinClientSize一样调整了帧的大小,但是如果不使用,则该帧可能会可怕地调整大小、尖叫和隐藏我的控件。所以我的问题是:

在xrc文件中是否有我在controls?

  • Using SetMinClientSize中缺少的功能来避免缩小帧子controls?

  • UsingSetMinClientSize是正确的方法?

  • 在xrc文件中是否有其他方法可以产生与SetSizerAndFit?相同的效果?谢谢,

注意:这也发生在我的linux wxwidget库中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-29 12:36:55

不幸的是,这些名称令人困惑,但是SetSizerAndFit()调用SetSizer()wxSizer::SetSizeHints(),而不是像预期的那样调用wxWindow::Fit()。因此,要具有与第一种情况完全相同的行为,需要在框架代码中调用GetSizer()->SetSizeHints(this)

而且,FWIW,wxSizer::SetSizeHints()做了一些明智的相当于

代码语言:javascript
复制
wxSize size = GetBestClientSize();
SetMinClientSize(size);
SetClientSize(size);

也就是说,它同时设置当前大小和最小大小,这可能是您想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71655279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档