如何在 wxwidgets 中隐藏组件后调整框架大小
How to resize frame after hiding a component in wxwidgets
我有一个框架,它有 4 个文本框和一个链接(更改文本框的数量(。 当用户单击链接时,我隐藏了第 4 个文本框。 但是发生的情况是在隐藏第 4 个文本框后,它的空间仍然是空白的。我不想将其空间留空。该空间应该消失,框架应该调整大小。有什么方法可以做到这一点吗?当用户再次单击链接时(更改文本框的数量,我再次显示第 4 个文本框。
法典:
m_ComputerNameText1 = new wxTextCtrl(m_panel, wxID_ANY, "computerName", wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()));
m_ComputerNameText2 = new wxTextCtrl(m_panel, wxID_ANY, "computerName1", wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()));
m_ComputerNameText3 = new wxTextCtrl(m_panel, wxID_ANY, "computerName3", wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()));
m_ComputerNameText4 = new wxTextCtrl(m_panel, wxID_ANY, "computerName4", wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()));
m_hyperLinkOption = new wxHyperlinkCtrl(m_panel, wxID_ANY, "Change no of textboxes", wxT(""), wxDefaultPosition, wxSize(135, wxDefaultSize.GetHeight()));
m_userPassSizer->Add(m_ComputerNameText1, 0, wxALIGN_LEFT | wxALL, 0);
m_userPassSizer->Add(m_ComputerNameText2, 0, wxALIGN_LEFT | wxALL, 0);
m_userPassSizer->Add(m_ComputerNameText3, 0, wxALIGN_LEFT | wxALL, 0);
m_userPassSizer->Add(m_ComputerNameText4, 0, wxALIGN_LEFT | wxALL, 0);
m_userPassSizer->Add(m_hyperLinkOption , 0, wxALIGN_LEFT | wxALL, 0);
单击超链接时执行以下函数。
void OnAuthCodeOptionLinkClicked(wxHyperlinkEvent& event)
{
if (!m_hyperlinkOptionSelected)
{
m_hyperlinkOptionSelected= true;
m_ComputerNameText4->Hide();
m_hyperLinkOption->SetLabel("Go back");
}
else
{
m_hyperlinkOptionSelected= false;
m_ComputerNameText4->Show();
m_hyperLinkOption->SetLabel("change no of textboxes");
}
}
这样,我必须隐藏并显示第 4 个文本框。隐藏后会留下一些空白。我怎样才能利用该空白区域并获取链接来代替第 4 个文本框?
每当我需要动态更新控件的大小时,我总是调用Layout()
和Refresh()
。
您可以在此处找到有关布局的更多信息:http://docs.wxwidgets.org/3.1/classwx_window.html#a1b143c3e72bd0af533b76db4830a6113以及有关窗口大小的一些好信息:http://docs.wxwidgets.org/3.1/overview_windowsizing.html
调用布局假定构造和管理文本框等的类本身是 wxWindow 派生控件(如面板、框架等(。 如果没有,就像您在视图模型上进行更改一样,您需要在拥有的窗口上调用布局和刷新:
void UpdateView()
{
view->Layout();
view->Refresh();
}
您可能需要使用尺寸调整器、窗口的最小大小等来获得您想要的确切行为。
相关文章:
- 为char数组调整zlib-zpipe
- 调整大小后指向元素值的指针unordered_map有效?
- 在C++中调整向量中的索引
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- catch框架有没有办法比较流或文件
- 哪些库可以通过Opencv调整曝光率
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用Qt框架在c ++类中创建API调用
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- 如何在ECS框架中更新组件数据和通知系统
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 用于C++的静态二进制检测或二进制重写工具和框架
- GoogleMock是否仍然打算与任何测试框架一起使用?
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 带有框架的 QGraphicsTextItem 的 QPropertyAnimation 会使文本抖动
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 如何在 wxwidgets 中隐藏组件后调整框架大小