WxWidget-在按钮单击时隐藏/显示`boxsizer`的内容
C++
我对C++
非常陌生,在此之前的两周,我正在学习python,并使用Tkinter
制作了一个音乐播放器,作为一个练习项目,直到最近我发现了wxWidgets
并使用了wxPython
,然后我切换到C++,因为我真的很想学习C++
。我有这个播放列表listbox
小部件,我有一个panel
小部件和它自己的boxsizer
小部件,我想让它隐藏和显示,点击一下按钮,主窗口就会相应地自动调整大小。我四处寻找如何做到这一点,我确实找到了Show()
和Hide()
,我能够达到我想要的效果,但主窗口没有正确调整大小,它拉伸得很奇怪,显示的播放列表大小错误。
隐藏播放列表的按钮函数如下
void Frame::Playlist(wxCommandEvent &event)
{
if (playlistButton->GetValue() == 1)
{
hboxSizer8->Show(true);
hboxSizer9->Show(true);
hboxSizer8->Layout();
hboxSizer9->Layout();
vboxSizer->Layout();
panel->SetSizerAndFit(vboxSizer, true);
}
else
{
hboxSizer8->Show(false);
hboxSizer9->Show(false);
hboxSizer8->Layout();
hboxSizer9->Layout();
vboxSizer->Layout();
panel->SetSizerAndFit(vboxSizer, true);
}
}
按钮设置如下
playlistButton = new wxToggleButton(panel, wxID_ANY, wxT("Playlist"), wxDefaultPosition, wxDefaultSize, 0);
playlistButton->Bind(wxEVT_TOGGLEBUTTON, &Frame::Playlist, this);
我添加GIF是为了更好地解释该问题。
wxWidgets
中有没有小工具或某些功能可以创建一个单独的窗口,所以我可以创建一个单独的窗口来保存我的播放列表,而不是所有内容的相同窗口,当用户将它们拉近时,它们可以像捕捉和连接在一起。
解决方案
您需要在Hide()/Show()
之后调用最上面的SizzerLayout()
。
另外,请查看auidemo并查看有关wxAUI*类的文档。
大小不是窗口。您应该只在wxListBox上调用Hide()/Show()
,然后在最上面的sizer上调用Layout()
。
相关文章