我刚接触C++
,才2周,在此之前,我正在学习python,并用Tkinter
做一个音乐播放器作为练习项目,直到最近我发现{{ 1}},并使用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);
中也有一个小部件或某些功能可以创建一个单独的窗口,因此我喜欢创建一个单独的窗口来保存我的播放列表,而不是所有内容都使用同一窗口,并且它们可以像齐齐地放置并加入,当用户使他们彼此靠近时。
答案 0 :(得分:0)
在Layout()
之后,您需要在最上面的sizer上调用Hide()/Show()
。
另外,看看auidemo并检查有关wxAUI *类的文档。
大小调整器不是Windows。您应该只在wxListBox上调用Hide()/Show()
,然后在最上面的sizer上调用Layout()
。