- qtgui
- qtdbus
- qtwidgets
- qtcore
- dtkcore
- qsettingbackend_zh
- dobject_zh
- abstractappender_zh
- abstractstringappender_zh
- dfilewatcher_zh
- outputdebugappender_zh
- dsettingsbackend_zh
- drecentmanager_zh
- ddesktopentry_zh
- consoleappender_zh
- gsettingsbackend_zh
- dsettingsgroup_zh
- dlogmanager_zh
- fileappender_zh
- dsettings_zh
- dfilesystemwatcher_zh
- dfilewatchermanager_zh
- dbasefilewatcher_zh
- dtkgui
- dtkwidget
- dviewitemaction_zh
- dstandarditem_zh
- dfiledialog_zh
- dclipeffectwidget_zh
- danchors_zh
- dgraphicsclipeffect_zh
- dstyle_zh
- dcoloredprogressbar_zh
- dbuttonboxbutton_zh
- dlabel_zh
- dtiplabel_zh
- darrowlinedrawer_zh
- daboutdialog_zh
- dsettingswidgetfactory_zh
- dsearchcombobox_zh
- dcrumbedit_zh
- dcommandlinkbutton_zh
- dsettingsdialog_zh
- dwindowoptionbutton_zh
- dspinner_zh
- dsimplelistview_zh
- dwaterprogress_zh
- dmainwindow_zh
- dhidpihelper_zh
- dslider_zh
- dpasswordedit_zh
- danchorinfo_zh
- dmpriscontrol_zh
- darrowbutton_zh
- dbackgroundgroup_zh
- dcircleprogress_zh
- dwarningbutton_zh
- dwindowclosebutton_zh
- dvideowidget_zh
- dfilechooseredit_zh
- dblureffectwidget_zh
- darrowrectangle_zh
- dsearchedit_zh
- dfloatingmessage_zh
- dswitchlineexpand_zh
- dtabbar_zh
- dlineedit_zh
- danchorsbase_zh
- dstylediconengine_zh
- dwindowmaxbutton_zh
- dpageindicator_zh
- dsuggestbutton_zh
- dapplicationsettings_zh
- dtooltip_zh
- dwindowminbutton_zh
- ddrawer_zh
- dtitlebar_zh
- dsimplelistitem_zh
- dpicturesequenceview_zh
danchorsbase_zh
Class::DAnchorsBase
暂无该属性
Detailed Description
DAnchorsBase 提供了一种指定 QWidget 与其它 QWidget 之间的关系来确定 其位置的方法 除了比较传统的布局方式之外, DtkWidget 还提供了一种使用锚定概念布局控件的方法( 类似于 QQuickItem 中的 anchors 属性),可以认为每个控件具有一组6个不可见的“锚 线”:left, horizontalCenter ,right,top, verticalCenter 和bottom,如图所示:
使用 DAnchors 可以让 QWidget 基于这些“锚线”来确定相互间的关系,如:
DAnchors<QLabel> rect1(new QLabel("rect1"));
DAnchors<QLabel> rect2(new QLabel("rect2"));
rect2.setLeft(rect1.right());
这样 rect2 的左边界就会和 rect1 的右边界对齐:
另外还可以同时设置多个“锚线”:
DAnchors<QLabel> rect1(new QLabel("rect1"));
DAnchors<QLabel> rect2(new QLabel("rect2"));
rect2.setTop(rect1.bottom());
rect2.setLeft(rect1.right());
锚定布局同时在多个控件中使用,控件之间只需要满足以下条件: UnknownCommand 控件之间为兄弟关系,或被锚定控件为父控件
UnknownCommand 锚定关系不能循环绑定
UnknownCommand margin_offset 锚定的间隔和偏移 锚定系统允许设置“锚线”之间的间距,和“锚线”一一对应,每个控件都有一组4个 margin: leftMargin , rightMargin , topMargin 和 bottomMargin 以及两个 offset: UnknownCommand horizontalCenterOffset 和 verticalCenterOffset 。
下面是左margin的例子:
DAnchors<QLabel> rect1(new QLabel("rect1"));
DAnchors<QLabel> rect2(new QLabel("rect2"));
rect2.setLeftMargin(5);
rect2.setLeft(rect1.right());
rect2 的左边界相距 rect1 的右边界5个像素:
Note: margin 仅仅是对设置的锚点生效,并不是让控件本身增加了边距,如果设置了 margin,但并没有设置相应的锚点,对控件本身而已是没有任何影响的。margin 的值可以 为负数,通过值的正负来决定margin的方向(内 margin 还是外 margin)
除了基于“锚线”来设置锚定外,另外还有 setCenterIn 和 setFill 这两个比较特殊的 的实现。
UnknownCommandloop_anchor 判断循环锚定的方式 假设 DAnchorsBase a1, a2; a1. setRight (a2. left() ); 则判断 a1 和 a2 之间 会不会存在循环绑定的逻辑为: 尝试更改 a1 右边界的值,更新后如果 a2 左边界的值产出了变化,则认为会导致循环绑 定,否则认为不存在
DAnchorsBase::metaObject
const QMetaObject * metaObject() const
DAnchorsBase::qt_metacast
void * qt_metacast(const char *)
DAnchorsBase::qt_metacall
int qt_metacall(QMetaObject::Call , int , void **)
DAnchorsBase::tr
QString tr(const char *s, const char *c, int n)
DAnchorsBase::trUtf8
QString trUtf8(const char *s, const char *c, int n)
DAnchorsBase::qt_static_metacall
void qt_static_metacall(QObject *, QMetaObject::Call , int , void **)
Class::QPrivateSignal
DAnchorsBase::QPrivateSignal
Detailed Description
This property holds 绑定了锚定功能的控件对象 *. Note: 只读
This property holds 控制锚定功能是否开启,为 false 时仅仅表示不会根据控件各种属性的变化来 * 来更新它的位置,但锚定关系并没有被解除 *. Note: 可读可写
This property holds target 控件的填充目标对象 *. Note: 可读可写
This property holds target 控件的居中目标对象 *. Note: 可读可写
This property holds 上下左右四条“锚线”的边距,此值的优先级低于每条“锚线”特定的 margin 值 *. Note: 可读可写
This property holds 上“锚线”的边距,优先级高于 margins *. Note: 可读可写
This property holds 下“锚线”的边距,优先级高于 margins *. Note: 可读可写
This property holds 左“锚线”的边距,优先级高于 margins *. Note: 可读可写
This property holds 右“锚线”的边距,优先级高于 margins *. Note: 可读可写
This property holds 水平“锚线”的偏移量 *. Note: 可读可写
This property holds 竖直“锚线”的偏移量 *. Note: 可读可写
DAnchorsBase::DAnchorsBase
DAnchorsBase(QWidget *w)
构造 DAnchorsBase 对象,传入的 w 对象会和一个新的 DAnchorsBase 对象 绑定到一起 w 需要使用锚定关系的控件 Note: 对 w 设置的锚定关系不会随着本次构造的 DAnchorsBase 对象的销毁而消失。 此构造函数可能会隐式的构造一个新 DAnchorsBase 对象用于真正的功能实现,函数执行 时会先检查当前是否已经有和 w 对象绑定的 DAnchorsBase 对象,如果没有则会创建一 个新的 DAnchorsBase 对象与之绑定,否则使用已有的对象。隐式创建的 DAnchorsBase 对象会在对应的 QWidget 对象被销毁时自动销毁。
See also target() clearAnchors() getAnchorBaseByWidget()
DAnchorsBase::~DAnchorsBase
~DAnchorsBase()
在析构时会判断此 DAnchorsBase 对象是否和 target 存在绑定关系,如果是 则从映射表中移除绑定 Warning: DAnchorsBasePrivate 对象可能是在多个 DAnchorsBase 对象之间显式 共享的,所以在销毁 DAnchorsBase 后,对应的 DAnchorsBasePrivate 对象不一定 会被销毁
See also QExplicitlySharedDataPointer 设置锚定信息的过程中可能出现的错误类型
UnknownCommand 设置锚定的过程中没有任何错误发生
UnknownCommand 表示设置的锚定关系跟已有关系存在冲突,如 fill 和 centerIn 不能同时设置
UnknownCommand 表示设置锚定关系时的目标控件无效
UnknownCommand 表示设置锚定关系时的“锚线”信息错误,如把 Qt::AnchorLeft 设置到了 Qt::AnchorTop 上
UnknownCommand 表示设置的锚定关系和已有关系形成了循环绑定
DAnchorsBase::target
QWidget * target() const
DAnchorsBase::enhancedWidget
DEnhancedWidget * enhancedWidget() const
返回 target 控件的扩展对象。此对象为 QWidget 对象额外提供了和控件大小、 位置相关的变化信号 Returns See also DEnhancedWidget
DAnchorsBase::enabled
bool enabled() const See also setEnabled()
DAnchorsBase::anchors
const DAnchorsBase * anchors() const
DAnchorsBase::top
const DAnchorInfo * top() const See also setTop()
DAnchorsBase::bottom
const DAnchorInfo * bottom() const See also setBottom()
DAnchorsBase::left
const DAnchorInfo * left() const See also setLeft()
DAnchorsBase::right
const DAnchorInfo * right() const See also setRight()
DAnchorsBase::horizontalCenter
const DAnchorInfo * horizontalCenter() const See also setHorizontalCenter()
DAnchorsBase::verticalCenter
const DAnchorInfo * verticalCenter() const See also setVerticalCenter()
DAnchorsBase::fill
QWidget * fill() const See also setFill()
DAnchorsBase::centerIn
QWidget * centerIn() const See also setCenterIn()
DAnchorsBase::margins
int margins() const See also setMargins()
DAnchorsBase::topMargin
int topMargin() const See also setTopMargin()
DAnchorsBase::bottomMargin
int bottomMargin() const See also setBottomMargin()
DAnchorsBase::leftMargin
int leftMargin() const See also setLeftMargin()
DAnchorsBase::rightMargin
int rightMargin() const See also setRightMargin()
DAnchorsBase::horizontalCenterOffset
int horizontalCenterOffset() const See also setHorizontalCenterOffset()
DAnchorsBase::verticalCenterOffset
int verticalCenterOffset() const See also setVerticalCenterOffset()
DAnchorsBase::alignWhenCentered
int alignWhenCentered() const See also setAlignWhenCentered()
DAnchorsBase::errorCode
DAnchorsBase::AnchorError errorCode() const
锚定过程中产生的错误,在一个新的锚定函数被调用之前会清空此错误状态,每次 调用锚定函数后,可以通过此函数的返回值来判断锚定设置是否成功 Returns See also errorString()
DAnchorsBase::errorString
QString errorString() const
对 errorCode 的文本描述信息 Returns See also errorCode
DAnchorsBase::isBinding
bool isBinding(const DAnchorInfo *info) const
如果此 info 设置了锚定对象,则返回 true ,否则返回 false
DAnchors<QWidget> w1;
DAnchors<QWidget> w2;
w1.setLeft(w2.right());
qDebug() << w1.isBinding(w1.left()) << w2.isBinding(w2.right());
打印内容为:ture false info Returns
DAnchorsBase::setAnchor
bool setAnchor(QWidget *w, const Qt::AnchorPoint &p, QWidget *target, const Qt::AnchorPoint &point)
方便用户直接设置两个对象之间锚定关系的静态函数,调用此函数可能会隐式创建 DAnchorsBase 对象 w 要锚定的控件对象 p 要锚定的锚线/锚点 target 锚定的目标对象 point 锚定的目标锚线/锚点 Returns 如果锚定成功,则返回 true,否则返回 false
DAnchorsBase::clearAnchors
void clearAnchors(const QWidget *w)
清除和控件 w 相关的所有锚定关系,包括锚定w或者被w锚定的任何关联。会直接 销毁 w 对应的 DAnchorsBase 对象 w
DAnchorsBase::getAnchorBaseByWidget
DAnchorsBase * getAnchorBaseByWidget(const QWidget *w)
返回与 w 绑定的 DAnchorsBase 对象 w Returns 如果 w 没有对应的锚定对象,则返回空
DAnchorsBase::setEnabled
void setEnabled(bool enabled) See also enabled()
DAnchorsBase::setAnchor
bool setAnchor(const Qt::AnchorPoint &p, QWidget *target, const Qt::AnchorPoint &point)
为 DAnchorsBase::target 对象设置锚定规则 Note: 可能会为目标控件隐式创建其对应的 DAnchorsBase 对象 p 为当前控件的哪个锚线/锚点设置锚定规则 target 锚定的目标控件 point 锚定的目标锚线/锚点 Returns 如果设置成功,则返回 true,否则返回 false
DAnchorsBase::setTop
bool setTop(const DAnchorInfo *top) See also top()
DAnchorsBase::setBottom
bool setBottom(const DAnchorInfo *bottom) See also bottom()
DAnchorsBase::setLeft
bool setLeft(const DAnchorInfo *left) See also left()
DAnchorsBase::setRight
bool setRight(const DAnchorInfo *right) See also right()
DAnchorsBase::setHorizontalCenter
bool setHorizontalCenter(const DAnchorInfo *horizontalCenter) See also horizontalCenter()
DAnchorsBase::setVerticalCenter
bool setVerticalCenter(const DAnchorInfo *verticalCenter) See also verticalCenter()
DAnchorsBase::setFill
bool setFill(QWidget *fill) See also fill()
DAnchorsBase::setCenterIn
bool setCenterIn(QWidget *centerIn) See also centerIn()
DAnchorsBase::setFill
bool setFill(DAnchorsBase *fill)
将 fill 中的 target() 作为参数调用其它重载函数 fill Returns
DAnchorsBase::setCenterIn
bool setCenterIn(DAnchorsBase *centerIn)
将 centerIn 中的 target() 作为参数调用其它重载函数 centerIn Returns
DAnchorsBase::setMargins
void setMargins(int margins) See also margins()
DAnchorsBase::setTopMargin
void setTopMargin(int topMargin) See also topMargin()
DAnchorsBase::setBottomMargin
void setBottomMargin(int bottomMargin) See also bottomMargin()
DAnchorsBase::setLeftMargin
void setLeftMargin(int leftMargin) See also leftMargin()
DAnchorsBase::setRightMargin
void setRightMargin(int rightMargin) See also rightMargin()
DAnchorsBase::setHorizontalCenterOffset
void setHorizontalCenterOffset(int horizontalCenterOffset) See also horizontalCenterOffset()
DAnchorsBase::setVerticalCenterOffset
void setVerticalCenterOffset(int verticalCenterOffset) See also verticalCenterOffset()
DAnchorsBase::setAlignWhenCentered
void setAlignWhenCentered(bool alignWhenCentered) See also alignWhenCentered()
DAnchorsBase::setTop
void setTop(int arg, Qt::AnchorPoint point)
DAnchorsBase::setBottom
void setBottom(int arg, Qt::AnchorPoint point)
DAnchorsBase::setLeft
void setLeft(int arg, Qt::AnchorPoint point)
DAnchorsBase::setRight
void setRight(int arg, Qt::AnchorPoint point)
DAnchorsBase::setHorizontalCenter
void setHorizontalCenter(int arg, Qt::AnchorPoint point)
DAnchorsBase::setVerticalCenter
void setVerticalCenter(int arg, Qt::AnchorPoint point)
DAnchorsBase::moveTop
void moveTop(int arg)
移动 target 控件的上边界到 arg 这个位置 arg 要移动到的位置
DAnchorsBase::moveBottom
void moveBottom(int arg)
移动 target 控件的下边界到 arg 这个位置 arg 要移动到的位置
DAnchorsBase::moveLeft
void moveLeft(int arg)
移动 target 控件的左边界到 arg 这个位置 arg 要移动到的位置
DAnchorsBase::moveRight
void moveRight(int arg)
移动 target 控件的右边界到 arg 这个位置 arg 要移动到的位置
DAnchorsBase::moveHorizontalCenter
void moveHorizontalCenter(int arg)
移动 target 控件的水平中线到 arg 这个位置 arg 要移动到的位置
DAnchorsBase::moveVerticalCenter
void moveVerticalCenter(int arg)
移动 target 控件的竖直中线到 arg 这个位置 arg 要移动到的位置
DAnchorsBase::moveCenter
void moveCenter(const int &arg)
移动 target 控件的上边界到 arg 这个位置 arg 要移动到的位置
DAnchorsBase::updateVertical
void updateVertical()
DAnchorsBase::updateHorizontal
void updateHorizontal()
DAnchorsBase::updateFill
void updateFill()
DAnchorsBase::updateCenterIn
void updateCenterIn()
DAnchorsBase::enabledChanged
void enabledChanged(bool enabled)
DAnchorsBase::topChanged
void topChanged(const DAnchorInfo *top)
DAnchorsBase::bottomChanged
void bottomChanged(const DAnchorInfo *bottom)
DAnchorsBase::leftChanged
void leftChanged(const DAnchorInfo *left)
DAnchorsBase::rightChanged
void rightChanged(const DAnchorInfo *right)
DAnchorsBase::horizontalCenterChanged
void horizontalCenterChanged(const DAnchorInfo *horizontalCenter)
DAnchorsBase::verticalCenterChanged
void verticalCenterChanged(const DAnchorInfo *verticalCenter)
DAnchorsBase::fillChanged
void fillChanged(QWidget *fill)
DAnchorsBase::centerInChanged
void centerInChanged(QWidget *centerIn)
DAnchorsBase::marginsChanged
void marginsChanged(int margins)
DAnchorsBase::topMarginChanged
void topMarginChanged(int topMargin)
DAnchorsBase::bottomMarginChanged
void bottomMarginChanged(int bottomMargin)
DAnchorsBase::leftMarginChanged
void leftMarginChanged(int leftMargin)
DAnchorsBase::rightMarginChanged
void rightMarginChanged(int rightMargin)
DAnchorsBase::horizontalCenterOffsetChanged
void horizontalCenterOffsetChanged(int horizontalCenterOffset)
DAnchorsBase::verticalCenterOffsetChanged
void verticalCenterOffsetChanged(int verticalCenterOffset)
DAnchorsBase::alignWhenCenteredChanged
void alignWhenCenteredChanged(bool alignWhenCentered)
DAnchorsBase::init
void init(QWidget *w)
DAnchorsBase::DAnchorsBase
DAnchorsBase(QWidget *w, bool )
DAnchorsBase::d_func
DAnchorsBasePrivate * d_func()
DAnchorsBase::d_func
const DAnchorsBasePrivate * d_func() const