【发布时间】:2021-05-24 13:41:07
【问题描述】:
我是 wxWidgets 的新手,因为我在使用 C++ 编程时从不使用 GUI。现在我必须这样做。我想使用 WinForms 中的 DockStyle.Right/Bottom/Fill 之类的东西使 UI 响应。由于我之前没有尝试过代码,所以问题很短,不是最好的,但我希望有人能帮助我。
编辑: 这就是我目前所拥有的。当我取消注释 SetMaxSize 时,底部有 30px 的空间,但面板(蓝色)不可见:
namespace tms {
MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame(NULL, wxID_ANY, title, pos, size) {
this->InitialiseComponents();
}
void MainFrame::InitialiseComponents() {
this->panelChatLog = new wxPanel(this, wxID_ANY);
this->panelChatLog->SetBackgroundColour(wxColour(0, 255, 0));
this->panelChatInput = new wxPanel(this, wxID_ANY);
this->panelChatInput->SetBackgroundColour(wxColour(0, 0, 255));
this->panelChatInput->SetMinSize(wxSize(0, 30));
//this->panelChatInput->SetMaxSize(wxSize(0, 30));
this->sizerPanels = new wxBoxSizer(wxVERTICAL);
this->sizerPanels->Add(this->panelChatLog, 1, wxEXPAND | wxALL);
this->sizerPanels->Add(this->panelChatInput, 1, wxEXPAND | wxALL);
this->SetSizer(this->sizerPanels);
}
void MainFrame::OnExit(wxCommandEvent& event) {
this->Close(true);
}
}
【问题讨论】:
-
wxWidgets 具有 wxAUI 系列控件。您可以在this video 中查看演示。这就是你要找的吗?
-
@NewPagodi 不太高级。不是那种对接方式。只要有一个父母,你就可以对接一个孩子,例如右侧的面板,因此它放置在右侧始终与父级的高度匹配,但保持其宽度。另一个设置为 dock.fill 的孩子将填充剩余的空间。我用谷歌搜索了一下,我认为它可以使用水平 wxBoxSizer 来完成,但我无法让它工作......
-
我现在明白了。我认为您是正确的-您要做的是在 wxWidgets 中使用 sizer 完成。一开始,Sizer 学习起来有点棘手。您可能会发现 wxFormbuilder 或 wxCrafter 等工具有助于入门。它们可以帮助您实时查看所有大小调整选项的作用。
-
@Matze,或者您可以安装与任何“wx”IDE 无关的 wxGlade。