Duilib→控件占位符

对于verticalLayout中占位符

占位符:

<?xml version="1.0" encoding="UTF-8"?>
<Window size="800,600" mininfo="600,400" caption="0,0,0,32" sizebox="4,4,4,4">
  <VerticalLayout bkcolor="#FFF0F0F0" bkcolor2="#FFAAAAA0">
    <!-- 标题栏区 -->
    <HorizontalLayout height="32" bkcolor="#FFE6E6DC" bkcolor2="#FFAAAAA0">   
      <VerticalLayout /> 
      <VerticalLayout width="100" bkcolor="#FFFF0000"> 
          <Button name="minbtn"   text = "小" tooltip="最小化" float="true" pos="0,5,22,24"  width="23" normalimage=" file='SysBtn\MinNormal.bmp' " hotimage=" file='SysBtn\MinFocus.bmp' " pushedimage=" file='SysBtn\MinFocus.bmp' "/>
          <Button name="maxbtn"   text = "大" tooltip="最大化" float="true" pos="22,5,44,24" width="23" normalimage=" file='SysBtn\MaxNormal.bmp' " hotimage=" file='SysBtn\MaxFocus.bmp' " pushedimage=" file='SysBtn\MaxFocus.bmp' " />
          <Button name="restorebtn" visible="false" tooltip="还原" float="true" pos="22,5,44,24" width="23" normalimage=" file='SysBtn\StoreNormal.bmp' " hotimage=" file='SysBtn\StoreFocus.bmp' " pushedimage=" file='SysBtn\StoreFocus.bmp' " />
          <Button name="closebtn" text = "关" tooltip="关闭"   float="true" pos="44,5,74,24" width="28" normalimage=" file='SysBtn\CloseNormal.bmp' " hotimage=" file='SysBtn\CloseFocus.bmp' " pushedimage=" file='SysBtn\CloseFocus.bmp' "/>
        </VerticalLayout>      
    </HorizontalLayout>
  </VerticalLayout>
</Window>

其中,

 <VerticalLayout /> 
      <VerticalLayout width="100" bkcolor="#FFFF0000"> 
          <Button name="minbtn"   text = "小" tooltip="最小化" 

中第一个 为占位符,如果没有指定,则认为是占width的一半。
对于VerticalLayout的占位符指定width宽度,对于HorizontalLayout的占位符要提供height。
在这里插入图片描述
宽度为20时,只显示小了
在这里插入图片描述

当左右两侧都有占位符时
在这里插入图片描述

占位符:
在这里插入图片描述
宽度为60时,只显示了小和大,对于关闭按钮并没有显示出来
在这里插入图片描述
*

HorizontalLayout 的占位符

同理:对于HorizontalLayout 的基准则是从最上面和最下面开始的
这一部分可以参考
Alberl–2013 duilib入门简明教程 – 界面布局(9)

在这里插入图片描述

控件位置:

此部分
Alberl–2013 duilib入门简明教程 – 界面布局(9)

  • button未指定位置和宽高时

对于此处button按钮没有指定位置时,由于在水平布局中,则button按钮布满整个水平布局
在这里插入图片描述

  • 对于没有指定位置,但指定宽高时

在这里插入图片描述

  • pos在前,控件大小由height指定
    在这里插入图片描述
  • 对于指定位置和指定宽高时,pos后两位为0时,控件大小由height和width控制,且pos 在height 的前面
    在这里插入图片描述
  • 对于pos放height后面时,

控件大小由pos指定
在这里插入图片描述

总结:

控件位置由pos的第一个点指定,没有pos时则从基准位置上开始算起的。
控件大小:pos 和height 的位置 谁在后面由谁决定。为了方便后期控件大小调整,一般建议pos的后两位写0,0,且pos放前面,只提供控件位置,控件大小则由后面的height属性来控制
如:

<Button name = "minbtn"  text = "小"  float = "true" pos = "40,0,0,0" height="30" width="38"   bkcolor = "FFFF0000" />

占位符再次示例:

对于HorizontalLayout布局来说

1.占位符后面再也没有东西时

<HorizontalLayout  bordercolor="ff00008" bordersize="4,4,4,4">
         <Button   name="zhi_btn" text="你好" padding="10,0,0,0" width="70" height="35"  bkimage="bg1.png"/>
      <Control bkcolor="ffff0000"/>
    </HorizontalLayout>

在这里插入图片描述
2.给占位符控制宽度时,且只有一个占位符时,基准是从左开始的

<HorizontalLayout  bordercolor="ff00008" bordersize="4,4,4,4">
         <Button   name="zhi_btn" text="你好" padding="10,0,0,0" width="70" height="35"  bkimage="bg1.png"/>
      <Control bkcolor="ffff0000" width="20"/>          
     </HorizontalLayout>

在这里插入图片描述
3.text的占位符
在这里插入图片描述
4.给占位符没有指定宽度时,沾满整个控件,当后续还有控件时,对于水平布局来说,是从右侧开始的基准

<HorizontalLayout  bordercolor="ff00008" bordersize="4,4,4,4">
         <Button   name="zhi_btn" text="你好" padding="10,0,0,0" width="70" height="35"  bkimage="bg1.png"/>
      <Control bkcolor="ffff0000" width="20"/>
      <Text name="name_txt" text="中国"  textpadding="0,5,0,0" width="70" height="35"  align="center" bkimage="bg1.png "/>
      <Text bkcolor="ff000000"/>
      <Text name="" text="你好呀" padding="5,0,0,0" width="70" height="35" bkimage="bg1.png "/>      
      
     </HorizontalLayout>

在这里插入图片描述
5.上述4的东西

<HorizontalLayout  bordercolor="ff00008" bordersize="4,4,4,4">
         <Button   name="zhi_btn" text="你好" padding="10,0,0,0" width="70" height="35"  bkimage="bg1.png"/>
      <Control bkcolor="ffff0000" width="20"/>
      <Text name="name_txt" text="中国"  textpadding="0,5,0,0" width="70" height="35"  align="center" bkimage="bg1.png "/>
      <Text bkcolor="ff000000"/>
      <Text name="" text="你好呀" padding="5,0,0,0" width="70" height="35" bkimage="bg1.png "/>      
      <Text name="" text="好" padding="5,0,0,0" width="70" height="35" bkimage="bg1.png "/>
     </HorizontalLayout>

在这里插入图片描述
6.有两个没有指定宽度的占位符时
在这里插入图片描述
7.有两个没有指定宽度的占位符,有三个控件时,占位符会被平分
在这里插入图片描述
8.
在这里插入图片描述
9.有4个占位符时
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Duilib是一个基于C++的开源UI库,它提供了丰富的控件和功能,可以用于快速开发Windows桌面应用程序。在Duilib,你可以自定义控件来满足特定的需求。 下面是一个示例,演示如何在Duilib创建一个自定义控件: ```cpp // 自定义控件的头文件 CustomControl.h #pragma once #include "UIlib.h" class CCustomControl : public DuiLib::CControlUI { public: CCustomControl(); virtual ~CCustomControl(); LPCTSTR GetClass() const; LPVOID GetInterface(LPCTSTR pstrName); void DoEvent(DuiLib::TEventUI& event); void PaintStatusImage(HDC hDC); protected: bool m_bMouseHover; bool m_bMousePressed; }; // 自定义控件的实现文件 CustomControl.cpp #include "CustomControl.h" CCustomControl::CCustomControl() : m_bMouseHover(false) , m_bMousePressed(false) { } CCustomControl::~CCustomControl() { } LPCTSTR CCustomControl::GetClass() const { return _T("CustomControl"); } LPVOID CCustomControl::GetInterface(LPCTSTR pstrName) { if (_tcscmp(pstrName, _T("CustomControl")) == 0) return static_cast<CCustomControl*>(this); return CControlUI::GetInterface(pstrName); } void CCustomControl::DoEvent(DuiLib::TEventUI& event) { if (event.Type == DuiLib::UIEVENT_MOUSEENTER) { m_bMouseHover = true; Invalidate(); } else if (event.Type == DuiLib::UIEVENT_MOUSELEAVE) { m_bMouseHover = false; Invalidate(); } else if (event.Type == DuiLib::UIEVENT_BUTTONDOWN) { m_bMousePressed = true; Invalidate(); } else if (event.Type == DuiLib::UIEVENT_BUTTONUP) { m_bMousePressed = false; Invalidate(); } CControlUI::DoEvent(event); } void CCustomControl::PaintStatusImage(HDC hDC) { if (m_bMousePressed) { // 绘制按下状态的控件外观 } else if (m_bMouseHover) { // 绘制鼠标悬停状态的控件外观 } else { // 绘制正常状态的控件外观 } } ``` 在上面的示例,我们创建了一个名为`CCustomControl`的自定义控件类,继承自`DuiLib::CControlUI`。在这个类,我们重写了一些方法来处理控件的事件和绘制外观。你可以根据自己的需求来实现这些方法。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值