如何水平划分wxPanel?

时间:2013-01-26 16:42:48

标签: perl layout wxwidgets wxperl

我正在构建一个控制台应用的布局和here's我想要实现的目标。到目前为止我所拥有的是this。 我的主窗口来自wxFrame。我使用wxSplitterWindow将窗口分成两个窗口:左边的一个窗口 - 一个wxTreeCtrl,右边的窗口是一个wxPanel。我的问题是如何实现以下内容:一个水平列表(可能是一个网格?),它显示了来自数据库的记录,但是有一个滚动,所以只显示了20-30,并且在这个表下面有一个简单的textarea(网格) ?)。

我尝试拆分wxPanel,就像我使用Frame一样,但它不起作用。当我尝试将Panel更改为Frame时,它可以工作,但Frame在新窗口中打开。所以现在我要问使用什么元素以及如何定位它们以便我有一个可滚动的表格,一条水平线,然后是一个简单的textarea。水平线应位于左侧面板的中间。这是我目前为止右侧面板的代码: 包RightPanel;

use strict;

use base qw(Wx::Panel);
use Wx qw(:everything);
sub new {
    my ($class, $parent_window) = @_;
my ($self) = $class->SUPER::new($parent_window);

    return $self;
}

2 个答案:

答案 0 :(得分:1)

wxSplitterWindow适用于可在运行时拆分和拆分的窗口。文本编辑器通常具有这种功能,因此它们可以提供同一文档的两个独立视图。

我假设你的框架中总是需要三个独立的窗口?您应该单独创建三个窗口并进行算术以对齐它们。听起来您希望顶部有wxScrolledWindow,底部有wxPanel

答案 1 :(得分:0)

为窗口创建一个带有wxHORIZONTAL标志的BoxSizer。

在这个BoxSizer中,创建一个Panel(左侧区域)和另一个BoxSizer - 带有wxVERTICAL标志 - 作为右侧区域。 (上面的wxHORIZONTAL标志会把这两个并排放在一起)。

在右侧BoxSizer中,创建一个ScrolledWindow(顶部)和一个Panel(底部)。右侧BoxSizer中的wxVERTICAL标志将垂直堆叠它们。

如果您之前从未玩过它们,那么Sizer很难让您满意......这可能会有所帮助:   Sizers and Layout