1

我设置了 wxListbook,我想为显示页面标题的左侧列表设置静态宽度。目前,当没有添加页面时,它没有任何宽度,当添加页面时,宽度变为最长标题间距。

空的:在此处输入图像描述

新增页面:在此处输入图像描述

我尝试了几件事,但没有运气。

首先,我尝试设置列宽,但没有发现任何区别:

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );

wxListView* listBookListView1 = listBook->GetListView();
listBookListView1->SetColumnWidth(0,400); //tried 0,1,-1 for the first parameter

然后,我尝试了 SetMinSize,但同样没有区别:

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );
    listBook->SetMinSize(wxSize(400,500));

我也试过 SetSize,但没有区别:

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );
listBook->SetSize(wxSize(200,200));

这样做的正确方法是什么?帮助表示赞赏。

4

2 回答 2

1

在 wxTreebook 上遇到了类似的问题,甚至为此准备了补丁,但它被拒绝了,因为可能会破坏自定义书籍控件的功能。默认情况下,所有自定义书籍控件都有与内部选择器控件(wxListView、wxTreeCtrl 等)布局相关的奇怪行为。如果你愿意,我可以尝试找到 wxTreebook 的代码并将其发送给你。也许你会发现那里有一些有用的东西。

您可以尝试解决的可能解决方案:

  • 将包含多个空格的假项目添加到列表簿中,然后显示框架,然后删除该项目(快速而肮脏,但我几乎可以肯定这会起作用,并且列表视图的宽度将不为零)
  • 自己打补丁wxListbook的源代码(wxWidgets是开源的,你可以很方便地修改源代码,然后创建补丁并在升级到新版本的wxWidgets后重新使用)
  • 显示框架并调用 Layout() 后尝试更改内部 wxListView 的 MinSize
于 2012-11-29T21:48:04.640 回答
0

当前wxListbook始终使列表适合其内容。就我个人而言,我真的想知道为什么这会是一个问题,特别是为什么你想要一个wxListbook没有任何页面的页面以及它有什么用处。但是,原则上,设置列表控件的最小尺寸应该可以工作,如果你可以改变 wxWidgets 来做到这一点,我们很乐意应用一个补丁来做到这一点。

但是现在没有办法做到这一点,对不起。

于 2012-11-30T00:28:10.240 回答