wxWidgets试图填满整个区域

时间:2016-11-30 14:24:27

标签: c++ wxwidgets

当我尝试使用wxWidgets准备gui时,我遇到了问题。 我想创建一些按钮,它们将覆盖文本框下的整个区域。

程序启动时看起来很不错,但是当我想要水平调整它时,按钮不会移动。有什么想法吗?

    mainFrame::mainFrame(std::string title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800, 600))
{
wxBoxSizer* vertSizer = new wxBoxSizer(wxVERTICAL);
vertSizer->Add(
        new wxTextCtrl(this, -1, "My text", wxDefaultPosition, wxSize(100,80), wxTE_MULTILINE),
        1, // vertically stretchable
        wxEXPAND | wxALL, // horizontally stretchable, borders all around
        10); // Add text box to parent sizer

wxBoxSizer* horizSizer = new wxBoxSizer(wxHORIZONTAL); // Make child sizer, will contain buttons
wxSizerFlags ButtonFlags(1); // Make controls stretch hoizontally (to cover entire sizer area)
ButtonFlags.Expand().Center().Border(wxALL,10); // Make controls expand vertically, add border
horizSizer->Add(new wxButton(this,123,"OK"), ButtonFlags); // Add first button
horizSizer->Add(new wxButton(this, 124,"Abort"), ButtonFlags); // Add second button
horizSizer->Add(new wxButton(this, 125,"Ignore"), ButtonFlags); // Add third button

vertSizer->Add(horizSizer); // Add child sizer to parent sizer
SetSizerAndFit(vertSizer);

}

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为您没有告诉主分析器(horizSizer)增加wxSizerFlags().Expand()以填充所有可用空间,您需要将ButtonFlags.Expand().Center()添加到但最后一行来解决这个问题。

此外,使用DoubleBorder()没有意义:您可以展开或居中,但不能同时展开两者,因此请选择一个。最后,Border(wxALL, 10)优于@Test(expected = ClassNotFoundException.class) public void mustNotUpgradeToGuava20_asItIsIncompatibleWithCassandra() throws ClassNotFoundException { Class.forName("com.google.common.graph.Graph"); }