WPF布局之Panel

WPF布局之Panel

一、StackPanel

StackPanel是以堆叠的方式显示其中的控件

   1、使用Orientation属性更改堆叠的顺序

  • Orientation="Vertical"

      默认,由上到下显示各控件。控件在未定义的前提下,宽度为StackPanel的宽度,高度自动适应控件中内容的高度

 <StackPanel Orientation="Vertical">
     <Button>Button A</Button>
     <Button>Button B</Button>
     <Button>Button C</Button>
     <Button>Button D</Button>
     <Button>Button E</Button>
     <Button>Button F</Button>
 </StackPanel>
  • Orientation="Horizontal"

     由左到右显示各控件。控件在未定义的前提下,高度为StackPanel的高度,宽度自动适应控件中内容的宽度

  <StackPanel Orientation="Horizontal"/>

 2、使用Margin属性设置控件位置

  • Margin属性
    定义控件的外边缘,可以通过以下几种方式来设置
    1)Margin=”10”:各边缘均为10
    2)Margin=”10,20,30,40”:设定左、上、右、下各边缘分别为10、20、30、40
    3)使用拆分式方式设定,如上下为10,左右为20

   1: <Button Content="Button A">

   2:     <Button.Margin>

   3:         <Thickness Top="10" Bottom="10" Left="20" Right="20" />

   4:     </Button.Margin>

   5: </Button>

  3、使用Width和Height属性设置控件的宽和高

      Width、Height属性

     设定控件的宽度和高度,取消自动的宽度和高度

  4、设置对齐方式

  • HorizontalAlignmentVerticalAlignment属性
    设定控件的水平或竖直对齐方式,如整体Orientation="Vertical"的前提下,设置水平对齐为Left、Right或Center,在没有设定宽度的情况下,控件的宽度自动调整

 5、设置控件宽度和高度限制

    MinWidth、MinHeight、MaxWidth、MaxHeight属性
    在调整窗体大小,同时更改控件大小时,控件宽度、高度可变化的最大值和最小值。

二、WrapPanel

以流的形式由左到右,由上到下显示控件,其功能类似于Java AWT布局中的FlowLayout

如代码

<WrapPanel Margin="0,0,2,0">
        <Button Name="btn1" Width="100" Height="50">A</Button>
        <Button Name="btn2" Width="100" Height="50">B</Button>
        <Button Name="btn3" Width="100" Height="50">C</Button>
        <Button Name="btn4" Width="100" Height="50">D</Button>
    </WrapPanel>

显示为

当更改窗体大小时,会根据窗体大小对控件进行重新布局。

三、DockPanel

以上、下、左、右、中为基本结构的布局方式,类似于Java AWT布局中的BorderLayout

但与BorderLayout不同的是,每一个区域可以同时放置多个控件,在同一区域放置的多个控件采用的布局方式为StackPanel方式。

如:

<DockPanel >
        <Button Content="ButtonA" Width="70" DockPanel.Dock="Top" />
        <Button Content="ButtonB" Width="70" HorizontalAlignment="Right" DockPanel.Dock="Top" />
        <Button Content="ButtonC" Margin="10" DockPanel.Dock="Top" />
        <Button Content="ButtonD" DockPanel.Dock="Left" />
        <Button Content="ButtonE" DockPanel.Dock="Right" />
        <Button Content="ButtonF" DockPanel.Dock="Bottom" />
        <Button Content="ButtonG" />
    </DockPanel>

显示的样式为:

分类: WPF

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Qt 中,我们可以使用 QGridLayout 或 QStackedLayout 来实现类似于 WPF 中 ItemsPanel 的效果。 QGridLayout 是一个网格布局,可以将控件布置在一个网格中。每个控件占用一个或多个网格单元。如果你想要在一个窗口中创建一个网格布局的 ItemsPanel,你可以按照以下方式进行操作: ```cpp #include <QGridLayout> #include <QPushButton> #include <QLabel> QWidget* widget = new QWidget; QGridLayout* layout = new QGridLayout(widget); QPushButton* button1 = new QPushButton("Button 1"); QPushButton* button2 = new QPushButton("Button 2"); QLabel* label1 = new QLabel("Label 1"); QLabel* label2 = new QLabel("Label 2"); layout->addWidget(button1, 0, 0); // 添加到第 0 行,第 0 列 layout->addWidget(button2, 0, 1); // 添加到第 0 行,第 1 列 layout->addWidget(label1, 1, 0); // 添加到第 1 行,第 0 列 layout->addWidget(label2, 1, 1); // 添加到第 1 行,第 1 列 widget->setLayout(layout); ``` 在这个例子中,我们创建了一个 QWidget 对象作为我们的 ItemsPanel,创建了一个 QGridLayout 对象作为我们的布局。然后,我们创建了四个控件并将它们添加到布局中,最后将布局设置为 QWidget 的布局。 这样,我们就创建了一个网格布局的 ItemsPanel,其中包含两个按钮和两个标签。你可以根据需要调整布局和添加更多的控件。 另一种实现 ItemsPanel 的方法是使用 QStackedLayout。QStackedLayout 是一个堆栈布局,可以将多个控件堆叠在一起,只显示其中一个控件。如果你想要在一个窗口中创建一个堆栈布局的 ItemsPanel,你可以按照以下方式进行操作: ```cpp #include <QStackedLayout> #include <QPushButton> #include <QLabel> QWidget* widget = new QWidget; QStackedLayout* layout = new QStackedLayout(widget); QPushButton* button1 = new QPushButton("Button 1"); QPushButton* button2 = new QPushButton("Button 2"); QLabel* label1 = new QLabel("Label 1"); QLabel* label2 = new QLabel("Label 2"); layout->addWidget(button1); layout->addWidget(button2); layout->addWidget(label1); layout->addWidget(label2); widget->setLayout(layout); layout->setCurrentIndex(0); // 显示第 0 个控件 ``` 在这个例子中,我们创建了一个 QWidget 对象作为我们的 ItemsPanel,创建了一个 QStackedLayout 对象作为我们的布局。然后,我们创建了四个控件并将它们添加到布局中,最后将布局设置为 QWidget 的布局。要显示特定的控件,我们可以使用 setCurrentIndex() 方法。 这样,我们就创建了一个堆栈布局的 ItemsPanel,其中包含两个按钮和两个标签。你可以根据需要调整布局和添加更多的控件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值