wxWidgets-单击时隐藏/显示`boxsizer`的内容

时间:2020-10-26 15:57:45

标签: c++ user-interface wxwidgets

我刚接触C++,才2周,在此之前,我正在学习python,并用Tkinter做一个音乐播放器作为练习项目,直到最近我发现{{ 1}},并使用wxWidgets,然后我真的想学习wxPython,因此我改用C ++。我有一个播放列表C++小部件,我将它放在listbox小部件的同一帧中,还拥有自己的panel小部件,希望它可以隐藏并显示在按钮上单击,主窗口会相应地自动调整大小。我四处寻找实现方法,找到了boxsizerShow(),可以达到我想要的效果,但是主窗口无法正确调整大小,它会奇怪地拉伸并显示播放列表大小错误。

隐藏播放列表的按钮功能如下所示:

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);
    }
}

我正在添加一个GIF,以更好地解释该问题。 musicApp

playlistButton = new wxToggleButton(panel, wxID_ANY, wxT("Playlist"), wxDefaultPosition, wxDefaultSize, 0); playlistButton->Bind(wxEVT_TOGGLEBUTTON, &Frame::Playlist, this); 中也有一个小部件或某些功能可以创建一个单独的窗口,因此我喜欢创建一个单独的窗口来保存我的播放列表,而不是所有内容都使用同一窗口,并且它们可以像齐齐地放置并加入,当用户使他们彼此靠近时。

1 个答案:

答案 0 :(得分:0)

Layout()之后,您需要在最上面的sizer上调用Hide()/Show()

另外,看看auidemo并检查有关wxAUI *类的文档。

大小调整器不是Windows。您应该只在wxListBox上调用Hide()/Show(),然后在最上面的sizer上调用Layout()

相关问题