c++ - wxNotebookPage 中的 wx* 布局

标签 c++ wxwidgets wxnotebook

我正在尝试为日程安排应用程序编写前端程序。在我的主选项卡中应该有两个列表(一个在另一个之上)。但这似乎是不可能的(我昨天坐了半天,今天又坐了三个小时)。所以这是我的结果:

enter image description here

这是我的代码的公共(public)部分:

    // LayoutManagement - Main
    sizer = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(sizer);

    // Tabpane
    tab_pane = new wxNotebook(this,TAB_PANE);
    sizer->Add(tab_pane,1,wxEXPAND);

    // Overview tab
    wxBoxSizer *ot_sizer = new wxBoxSizer(wxVERTICAL);
    overview_tab = new wxNotebookPage(tab_pane,TAB_OVERVIEW);
    overview_tab->SetSizer(ot_sizer);
    tab_pane->AddPage(overview_tab,_("Countdown und Nachrichten"),true);

    // Schedule
    schedule_list = new wxListBox(overview_tab, SCHEDULE_LIST);
    ot_sizer->Add(schedule_list,1,wxEXPAND);

    // NewsList
    news_list = new wxListBox(overview_tab,NEWS_LIST);
    ot_sizer->Add(news_list,3,wxEXPAND);

还有我的标题(部分):

    wxListBox *schedule_list;
    wxBoxSizer *sizer;
    wxListBox *news_list;
    wxNotebook *tab_pane;
    wxNotebookPage *overview_tab, *settings_tab, *about_end_tab;

我做错了什么?

问候

迈克尔

(抱歉我的英语不好)

最佳答案

此代码不起作用的原因是您在将小部件添加到 sizer 之前调用了 SetSizer()。您应该在将小部件添加到 sizer 之后将调用移至 SetSizer,或者强制 sizer 在添加后重做布局。

ot_sizer->Add(news_list,3,wxEXPAND);

// all widgest added to sizer, now arrange layout as specified
ot_sizer->Layout();

这应该暂时修复您的代码。

关于您的代码结构的最后评论:您似乎在一个大代码段中构建所有内容。这不是一个好主意。当您继续向 GUI 添加元素时,它会变得非常困惑。最好对每个页面进行子类化,并在该页面的构造函数中创建属于每个页面的小部件。

class cOverviewTab : public wxNotebookPage
{
public:
cOverviewTab() : wxNotebookPage(tab_pane,TAB_OVERVIEW)
{
  wxBoxSizer *ot_sizer = new wxBoxSizer(wxVERTICAL);
  ot_sizer->Add( new wxListBox(overview_tab, SCHEDULE_LIST) );
  ot_sizer->Add( new wxListBox(overview_tab,NEWS_LIST) );
  SetSizer( ot_sizer );
}
};

关于c++ - wxNotebookPage 中的 wx* 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10570575/

相关文章:

java - 如何模拟二维图像中的衣服变化?

c# - 视觉 C++ : function definition for 'mouse_event' not found

c++ - 我怎样才能在 wxWidgets 中找到一个 sizer?

c++ - 在 Code::Blocks 中设置 wxWidgets?

c++ - 使用 wxNotebook 创建选项卡闪烁效果(如 IM 程序)

python - wxPython中透明笔记本页面/设置笔记本页面背景图片

c++ - 实例化和特化的定义相互依赖

C++ 右值 move 语义,关于流的问题

c++ - 运行时错误-f1.exe 不存在或不是可执行文件