DtkWidget
DTK Widget module
载入中...
搜索中...
未找到
Dtk::Widget::DStackWidget类 参考

一个可定制切换动画的容器控件. 更多...

类 Dtk::Widget::DStackWidget 继承关系图:

Public 槽

int pushWidget (QWidget *widget, bool enableTransition=true)
 DStackWidget::pushWidget 入栈一个新的内容控件.
 
void insertWidget (int index, QWidget *widget, bool enableTransition=true)
 在指定的位置插入一个新的内容控件.
 
void popWidget (QWidget *widget=nullptr, bool isDelete=true, int count=1, bool enableTransition=true)
 出栈指定的内容控件.
 
void clear ()
 移除所有控件(无动画).
 
int indexOf (QWidget *widget) const
 获取指定控件的索引.
 
QWidget * getWidgetByIndex (int index) const
 通过索引获取控件.
 
void setTransition (DAbstractStackWidgetTransition *transition)
 DStackWidget::setTransition transition
 
void setAnimationDuration (int animationDuration)
 DStackWidget::setAnimationDuration animationDuration
 
void setAnimationType (QEasingCurve::Type animationType)
 DStackWidget::setAnimationType animationType
 

信号

void busyChanged (bool busy)
 
void depthChanged (int depth)
 
void currentIndexChanged (int currentIndex)
 
void currentWidgetChanged (QWidget *currentWidget)
 
void widgetDepthChanged (QWidget *widget, int depth)
 
void switchWidgetFinished ()
 当切换一次显示的内容后被调用(动画结束后)
 

Public 成员函数

 DStackWidget (QWidget *parent=0)
 构造一个 DStackWidget 实例 parentDStackWidget 实例的父控件
 
bool busy () const
 
int depth () const
 
int currentIndex () const
 
QWidget * currentWidget () const
 
DAbstractStackWidgetTransitiontransition () const
 
int animationDuration () const
 
QEasingCurve::Type animationType () const
 

Protected 成员函数

 DStackWidget (DStackWidgetPrivate &dd, QWidget *parent=0)
 
void setCurrentIndex (int currentIndex, DAbstractStackWidgetTransition::TransitionType type=DAbstractStackWidgetTransition::Push, bool enableTransition=true)
 
void setCurrentWidget (QWidget *currentWidget, DAbstractStackWidgetTransition::TransitionType type=DAbstractStackWidgetTransition::Push, bool enableTransition=true)
 

属性

bool busy
 busy is true if a transition is running, and false otherwise.
 
int depth
 The number of widgets currently pushed onto the stack.
 
int currentIndex
 表示当前内容在栈中的索引位置(从 0 开始计数).
 
QWidget * currentWidget
 表示当前内容的对象.
 
DAbstractStackWidgetTransitiontransition
 当前使用的动画对象
 
int animationDuration
 这个属性表示当前动画播放一次所需要的时间.
 
QEasingCurve::Type animationType
 这个属性表示当前动画的类型.
 

详细描述

一个可定制切换动画的容器控件.

\inmodule dtkwidget

DStackWidget 在内容展示方面类似于一个使用了 QStackedLayout 布局的控件, 即在同一个位置展示不同的内容, 但 DStackWidget 提供了 切换内容时的动画效果, 并且可进行自定义动画, 另外 DStackWidget 采用了栈的先入后出理念(不过也并没有完全遵守), 使用 DStackWidget::pushWidget 方法入栈新的内容, 使用 DStackWidget::popWidget 出栈当前内容并显示下层内容(如果有的话), 还有 DStackWidget::insertWidget 可以指定插入的位置.

如果要自定义动画则需要继承 DAbstractStackWidgetTransition, 具体实现可参考 DSlideStackWidgetTransition 类, DSlideStackWidgetTransition 类是 DStackWidget 使用的默认动画即滑动.

成员函数说明

◆ busyChanged

void Dtk::Widget::DStackWidget::busyChanged ( bool  busy)
signal

busy 当前状态是否是过渡动画.

参见
DStackWidget::busy

◆ currentIndexChanged

void Dtk::Widget::DStackWidget::currentIndexChanged ( int  currentIndex)
signal

currentIndex 当前索引.

参见
DStackWidget::currentIndex

◆ currentWidgetChanged

Dtk::Widget::DStackWidget::currentWidgetChanged ( QWidget *  currentWidget)
signal

currentWidget 修改的当前小控件

参见
DStackWidget::currentWidget

◆ depthChanged

void Dtk::Widget::DStackWidget::depthChanged ( int  depth)
signal

depth 改变的层级大小.

参见
DStackWidget::depth

◆ getWidgetByIndex

QWidget * Dtk::Widget::DStackWidget::getWidgetByIndex ( int  index) const
slot

通过索引获取控件.

index 指定索引

返回
通过索引找到的控件

◆ indexOf

int Dtk::Widget::DStackWidget::indexOf ( QWidget *  widget) const
slot

获取指定控件的索引.

widget 指定的控件

返回
通过控件找到的索引

◆ insertWidget

void Dtk::Widget::DStackWidget::insertWidget ( int  index,
QWidget *  widget,
bool  enableTransition = true 
)
slot

在指定的位置插入一个新的内容控件.

需要注意的是如果第一个参数 index 不是栈的最后一个位置将不会显示动画

index 要插入的索引 widget 要插入的控件 enableTransition 是否使用动画

参见
DStackWidget::pushWidget

◆ popWidget

void Dtk::Widget::DStackWidget::popWidget ( QWidget *  widget = nullptr,
bool  isDelete = true,
int  count = 1,
bool  enableTransition = true 
)
slot

出栈指定的内容控件.

If widget is nullptr, all widgets up to the currentIndex+count widgets will be popped. If not specified, all widgets up to the depthOf(widget)+count widgets will be popped.

如果所有参数都没有指定, 那么将只移除当前的内容控件, 一般是栈顶的控件. 如果指定了参数 widget 那么计数将从控件 widget 在栈中的索引开始往栈顶方向计算移除 count 个内容控件

widget 指定要移除的控件 isDelete 是否删除控件对象 count 指定要移除的控件的数量 enableTransition 是否使用动画

◆ pushWidget

int Dtk::Widget::DStackWidget::pushWidget ( QWidget *  widget,
bool  enableTransition = true 
)
slot

DStackWidget::pushWidget 入栈一个新的内容控件.

widget 新的内容控件对象 enableTransition 是否使用动画

返回
此对象在栈中的索引(从 0 开始计数)
参见
DStackWidget::insertWidget

◆ setAnimationDuration

void Dtk::Widget::DStackWidget::setAnimationDuration ( int  animationDuration)
slot

◆ setAnimationType

void Dtk::Widget::DStackWidget::setAnimationType ( QEasingCurve::Type  animationType)
slot

◆ setTransition

void Dtk::Widget::DStackWidget::setTransition ( DAbstractStackWidgetTransition transition)
slot

属性说明

◆ animationDuration

Dtk::Widget::DStackWidget::animationDuration
readwrite

这个属性表示当前动画播放一次所需要的时间.

Getter: DStackWidget::animationDuration , Setter: DStackWidget::setAnimationDuration

◆ animationType

Dtk::Widget::DStackWidget::animationType
readwrite

这个属性表示当前动画的类型.

Getter: DStackWidget::animationType , Setter: DStackWidget::setAnimationType

参见
QEasingCurve::Type

◆ busy

Dtk::Widget::DStackWidget::busy
read

busy is true if a transition is running, and false otherwise.

表示当前是否处于过渡动画过程中.

Getter: DStackWidget::busy , Signal: DStackWidget::busyChanged

◆ currentIndex

Dtk::Widget::DStackWidget::currentIndex
read

表示当前内容在栈中的索引位置(从 0 开始计数).

Getter: DStackWidget::currentIndex , Signal: DStackWidget::currentIndexChanged

◆ currentWidget

Dtk::Widget::DStackWidget::currentWidget
read

表示当前内容的对象.

Getter: DStackWidget::currentWidget , Signal: DStackWidget::currentWidgetChanged

◆ depth

Dtk::Widget::DStackWidget::depth
read

The number of widgets currently pushed onto the stack.

表示正在管理有多少层内容(从 1 开始计数).

Getter: DStackWidget::depth , Signal: DStackWidget::depthChanged

◆ transition

Dtk::Widget::DStackWidget::transition
readwrite

当前使用的动画对象

如果没有调用过这个属性的 setter 方法, 那么将会返回默认使用的动画对象即 DSlideStackWidgetTransition 的一个实例 Getter: DStackWidget::transition , Setter: DStackWidget::setTransition


该类的文档由以下文件生成: