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`的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:WxWidget-在按钮单击时隐藏/显示`boxsizer`的内容
				
        
 
            
        
             猜你喜欢
        
	     - DoEvents 等效于 C++? 2021-01-01
 - 如何提取 __VA_ARGS__? 2022-01-01
 - 哪个更快:if (bool) 或 if(int)? 2022-01-01
 - 将 hdc 内容复制到位图 2022-09-04
 - OpenGL 对象的 RAII 包装器 2021-01-01
 - 将函数的返回值分配给引用 C++? 2022-01-01
 - 从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值 2021-01-01
 - GDB 不显示函数名 2022-01-01
 - XML Schema 到 C++ 类 2022-01-01
 - 使用 __stdcall & 调用 DLLVS2013 中的 GetProcAddress() 2021-01-01
 
						
						
						
						
						