WxWidget-在按钮单击时隐藏/显示`boxsizer`的内容

wxWidgets - Hide/Show contents of of a `boxsizer` on button click(WxWidget-在按钮单击时隐藏/显示`boxsizer`的内容)
本文介绍了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()

这篇关于WxWidget-在按钮单击时隐藏/显示`boxsizer`的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Boost module machine type #39;X86#39; conflicts with target machine type #39;x64#39;(Boost模块计算机类型#39;x86#39;与目标计算机类型#39;x64#39;)
Trouble running LLVM examples(运行LLVM示例时出现问题)
Linker error while linking some windows APIs(链接某些Windows API时出现链接器错误)
Python ctypes, C++ object destruction(Python ctype,C++对象销毁)
DllGetClassObject return amp;quot;No such interface supportedamp;quot; while CoCreateInstance can find it successful(DllGetClassObject返回amp;不支持这样的接口,而CoCreateInstance发现它成功了)
Is static_castamp;lt;doubleamp;gt;(std::nanf(amp;quot;amp;quot;)) well defined?(Static_castamp;lt;doubleamp;gt;(std::nanf(amp;quot;amp;quot;))是否定义良好?)