返回介绍

QDockWindow类

发布于 2019-10-04 14:59:33 字数 14363 浏览 929 评论 0 收藏 0

QDockWindow类提供了可以被锚接入QDockArea或者作为顶级窗口在桌面上浮动的窗口部件。 详情请见……

#include <qdockwindow.h>

继承了QFrame。

被QToolBar继承。

所有成员函数的列表。

公有成员

  • enum Place { InDock, OutsideDock }
  • enum CloseMode { Never = 0, Docked = 1, Undocked = 2, Always = Docked | Undocked }
  • QDockWindow ( Placep = InDock, QWidget*parent = 0, constchar*name = 0, WFlagsf = 0 )
  • virtual void setWidget ( QWidget*w )
  • QWidget * widget () const
  • Place place () const
  • QDockArea * area () const
  • virtual void setCloseMode ( intm )
  • bool isCloseEnabled () const
  • int closeMode () const
  • virtual void setResizeEnabled ( boolb )
  • virtual void setMovingEnabled ( boolb )
  • bool isResizeEnabled () const
  • bool isMovingEnabled () const
  • virtual void setHorizontallyStretchable ( boolb )
  • virtual void setVerticallyStretchable ( boolb )
  • bool isHorizontallyStretchable () const
  • bool isVerticallyStretchable () const
  • void setHorizontalStretchable ( boolb ) (obsolete)
  • void setVerticalStretchable ( boolb ) (obsolete)
  • bool isHorizontalStretchable () const (obsolete)
  • bool isVerticalStretchable () const (obsolete)
  • bool isStretchable () const
  • virtual void setOffset ( into )
  • int offset () const
  • virtual void setFixedExtentWidth ( intw )
  • virtual void setFixedExtentHeight ( inth )
  • QSize fixedExtent () const
  • virtual void setNewLine ( boolb )
  • bool newLine () const
  • Qt::Orientation orientation () const
  • QBoxLayout * boxLayout ()
  • virtual void setOpaqueMoving ( boolb )
  • bool opaqueMoving () const

公有槽

  • virtual void undock ()
  • virtual void dock ()
  • virtual void setOrientation ( Orientationo )

信号

  • void orientationChanged ( Orientationo )
  • void placeChanged ( QDockWindow::Placep )
  • void visibilityChanged ( boolvisible )

属性

  • int closeMode- 锚接窗口的关闭模式
  • bool horizontallyStretchable- 锚接窗口水平方向上可否延伸
  • bool movingEnabled- 用户可不可以在锚接区域内移动锚接窗口、把锚接窗口移动到其他锚接区域、或者浮动锚接窗口
  • bool newLine- 锚接窗口是否更愿意在锚接区域中新开一行
  • int offset- 锚接窗口对于锚接区域的左边界(对于垂直锚接区域是上边界)首选的位移
  • bool opaqueMoving- 在锚接窗口正在被移动的时候,锚接窗口是否将被正常显示
  • Place place- 锚接窗口是否在锚接区域中(只读)
  • bool resizeEnabled- 锚接窗口是否是可以重新定义大小的
  • bool stretchable- 锚接窗口在当前的orientation()上是否是可延伸的(只读)
  • bool verticallyStretchable- 锚接窗口垂直方向上可否延伸

详细描述

QDockWindow类提供了可以被锚接入QDockArea或者作为顶级窗口在桌面上浮动的窗口部件。

这个类处理锚接窗口的移动、重定义大小、锚接和取消锚接。QToolBar是QDockWindow的一个子类,所以提供给锚接窗口的功能对于工具条的相同应用编程接口也是可用的。

QDockWindows in a QDockArea

在QDockArea中的两个QDockWindow(QToolBar)

A QDockWindow

一个浮动的QDockWindow

如果用户把锚接窗口拖动到锚接区域中,锚接窗口将被锚接。如果用户锚接窗口拖动到任何锚接窗口外面,锚接窗口将被取消锚接(也就是被浮动)并且变为一个顶级窗口。双击浮动的锚接窗口的标题栏将会把锚接窗口锚接到它最近一次被锚接的地方。双击被锚接的锚接窗口句柄将取消锚接窗口的锚接(也就是浮动起来)。单击被锚接的锚接窗口句柄将最小化这个锚接窗口(只有它的句柄被显示,在菜单条下面)。单击最小化句柄将会把锚接窗口恢复到最近一次被锚接的地方。如果用户点击关闭按钮(默认情况下会出现在浮动的锚接窗口上),锚接窗口将会消失。你可以通过setCloseMode()控制锚接窗口是否有一个关闭按钮。

QMainWindow提供四个可以用来锚接窗口的锚接区域(上、下、左、右)。对于一些应用程序使用这些QMainWindow提供的锚接区域将是足够的。(如果你想创建你自己的锚接区域,请参考QDockArea文档。)在QMainWindow中右键单击弹出菜单(锚接窗口菜单)是可以用来列出锚接窗口的列表的并且可以用来显示或者隐藏它们。

当你构造一个锚接窗口时,如果你想它被锚接的话,你必须把QDockArea或者QMainWindow传递给它作为父对象。如果你想它被浮动,就传递0给它作为父对象。

    QToolBar *fileTools = new QToolBar( this, "File Actions" );
    moveDockWindow( fileTools, Left );
    

在上述的实例中,你在一个QMainWindow的子类的构造函数中创建一个新的QToolBar(所以this指针指向QMainWindow)。默认情况下,这个工具条将被添加到Top锚接区域,但是我们已经把它移动到Left锚接区域了。

锚接窗口通常用于包含一个单一的窗口部件。在这些情况下,这个窗口部件可以通过调用setWidget()来被设置。如果你正在构造一个包含多个窗口部件的锚接窗口,例如一个工具条把窗口部件排列在锚接窗口的盒子布局中。为了做到这点,请使用boxLayout()函数来获得锚接窗口的盒子布局,然后使用盒子布局的QBoxLayout::addWidget()函数来把窗口部件添加到这个布局中。锚接窗口将会按需要动态地设置布局的方向为水平或者垂直,尽管你可以通过setOrientation()来自己控制它。

尽管锚接窗口的通常用途是为了工具条,它们可以被用于任何窗口部件。(对于实例,请参考Qt设计器Qt语言学家应用程序。)当使用更大的窗口部件,它可以通过调用setResizeEnabled()来告诉锚接窗口可以被重新定义大小。可重新定义大小的锚接窗口是给定像分割句柄来允许用户在它们的锚接区域中重新定义它们的大小。当可重新定义大小的锚接窗口被取消锚接,它们变为顶级窗口并且可以像其它顶级窗口被重新定义大小,例如通过拖动角或者边缘来实现。

锚接窗口可以使用dock()和undock()来被锚接和取消锚接。锚接窗口的方向可以使用setOrientation()来设置。你也可以使用QDockArea::moveDockWindow()。如果你正在使用一个QMainWindow,QMainWindow::moveDockWindow()和QMainWindow::removeDockWindow()是可用的。

锚接窗口有一些首选设置,例如,你可以使用setOffset()设置从锚接区域的左边界(对于垂直锚接区域是上边界)开始的首选位移。如果你喜欢锚接窗口当它被锚接时开始一个新行,请使用setNewLine()。setFixedExtentWidth()和setFixedExtentHeight()函数可以用来定义锚接窗口的首选大小,并且setHorizontallyStretchable()和setVerticallyStretchable()函数设置锚接窗口是否可以被延伸。默认情况下锚接窗口可以被移动,但是这个可以通过setMovingEnabled()来改变。当锚接窗口被移动时,它被显示唯一个矩形边界,但是使用setOpaqueMoving()它可以被正常地显示。

当锚接窗口的可视性发生改变,也就是它被显示或者隐藏,visibilityChanged() 信号被发射。当锚接窗口被锚接或者取消锚接时,placeChanged()信号被发射。

也可以参考主窗口和相关类。


成员类型文档

QDockWindow::CloseMode

这个枚举变量指定了锚接窗口什么时候有(如果)一个关闭按钮。

  • QDockWindow::Never - 锚接窗口从没有一个关闭按钮并且不能被用户关闭
  • QDockWindow::Docked - 锚接窗口只有在被锚接的时候有一个关闭按钮。
  • QDockWindow::Undocked - 锚接窗口只有在浮动的时候有一个关闭按钮。
  • QDockWindow::Always - 锚接窗口总是有一个关闭按钮。

注意如果用户在锚接窗口被锚接时点击它们的锚接窗口句柄,锚接窗口总是被最小化。

QDockWindow::Place

这个枚举变量指定了QDockWindow的可能位置:

  • QDockWindow::InDock - 在一个QDockArea中
  • QDockWindow::OutsideDock - 在桌面上作为顶级窗口浮动。

成员函数文档

QDockWindow::QDockWindow ( Placep = InDock, QWidget*parent = 0, constchar*name = 0, WFlagsf = 0 )

构造一个父对象为parent、名称为name并且窗口部件标记为f的QDockWindow。

如果p为InDock,这个锚接窗口被锚接如一个锚接区域并且parent必须为QDockArea或QMainWindow。如果parent为QMainWindow,锚接窗口将被锚接到这个主窗口的Top锚接区域。

如果p为OutsideDock,parent必须为0并且这个锚接窗口被创建为浮动窗口。

我们建议创建QMainWindow为父对象,锚接位置为InDock的锚接窗口,然后调用QMainWindow::moveDockWindow()来把这个锚接窗口移动到你想要的位置。

QDockArea* QDockWindow::area () const

返回锚接窗口被锚接的锚接区域,或者如果它正在浮动,返回0。

QBoxLayout* QDockWindow::boxLayout ()

返回用于把窗口部件添加到锚接窗口的布局。布局的方向自动与锚接窗口的方向匹配。你可以使用盒子布局的QBoxLayout::addWidget()函数来添加窗口部件到这个布局中。

如果锚接窗口只需要包含一个窗口部件,请使用setWidget()来替代它。

也可以参考setWidget()和setOrientation()。

int QDockWindow::closeMode () const

返回锚接窗口的关闭模式。详细情况请参考“closeMode”属性。

void QDockWindow::dock () [虚 槽]

把锚接窗口锚接到它最近一次被锚接的锚接区域中。

如果锚接窗口没有最近一次被锚接的区域(例如它被创建为浮动的并且从没有被锚接过),或者如果最近一次被锚接的区域已经不存在了(例如那个锚接区域已经被删除了),就什么也不会发生。

也可以参考undock()。

QSize QDockWindow::fixedExtent () const

返回锚接窗口的首选大小(固定的宽度)。

也可以参考setFixedExtentWidth()和setFixedExtentHeight()。

bool QDockWindow::isCloseEnabled () const

如果锚接窗口有一个关闭按钮,返回真,否则返回假。这个结果依赖于锚接窗口的Place和它的CloseMode。

也可以参考closeMode。

bool QDockWindow::isHorizontalStretchable () const

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

bool QDockWindow::isHorizontallyStretchable () const

如果锚接窗口是水平方向上可延伸的,返回真,否则返回假。详细情况请参考“horizontallyStretchable”属性。

bool QDockWindow::isMovingEnabled () const

如果用户可以在锚接区域内移动锚接窗口、把锚接窗口移动到其他锚接区域、或者浮动锚接窗口,返回真,否则返回假。详细情况请参考“movingEnabled”属性。

bool QDockWindow::isResizeEnabled () const

如果锚接窗口是可以重新定义大小的,返回真,否则返回假。详细情况请参考“resizeEnabled”属性。

bool QDockWindow::isStretchable () const

如果锚接窗口在当前的orientation()上是可延伸的,返回真,否则返回假。详细情况请参考“stretchable”属性。

bool QDockWindow::isVerticalStretchable () const

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

bool QDockWindow::isVerticallyStretchable () const

如果锚接窗口是垂直方向上可延伸的,返回真,否则返回假。详细情况请参考“verticallyStretchable”属性。

bool QDockWindow::newLine () const

如果锚接窗口更愿意在锚接区域中新开一行,返回真否则返回假。详细情况请参考“newLine”属性。

int QDockWindow::offset () const

返回锚接窗口对于锚接区域的左边界(对于垂直锚接区域是上边界)首选的位移。详细情况请参考“offset”属性。

bool QDockWindow::opaqueMoving () const

如果在锚接窗口正在被移动的时候,锚接窗口将被正常显示,返回真,否则返回假。详细情况请参考“opaqueMoving”属性。

Qt::Orientation QDockWindow::orientation () const

返回锚接窗口的方向。

也可以参考orientationChanged()。

void QDockWindow::orientationChanged ( Orientationo ) [信号]

当锚接窗口的方向发生改变时,这个信号被发射。新方向为o

Place QDockWindow::place () const

如果锚接窗口在锚接区域中,返回真,否则返回假。详细情况请参考“place”属性。

void QDockWindow::placeChanged ( QDockWindow::Placep ) [信号]

当锚接窗口被锚接时(p为InDock)或者被取消锚接时(p为OutsideDock),这个信号被发射。

也可以参考QDockArea::moveDockWindow()、QDockArea::removeDockWindow()、QMainWindow::moveDockWindow()和QMainWindow::removeDockWindow()。

void QDockWindow::setCloseMode ( intm ) [信号]

设置锚接窗口的关闭模式为m。详细情况请参考“closeMode”属性。

void QDockWindow::setFixedExtentHeight ( inth ) [虚]

设置锚接窗口的固定宽度(大小)时的首选高度为h

也可以参考setFixedExtentWidth()。

void QDockWindow::setFixedExtentWidth ( intw ) [虚]

设置锚接窗口的固定宽度(大小)时的首选宽度为w

也可以参考setFixedExtentHeight()。

void QDockWindow::setHorizontalStretchable ( boolb )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

void QDockWindow::setHorizontallyStretchable ( boolb ) [虚]

设置锚接窗口在水平方向上是否可延伸为b。详细情况请参考“horizontallyStretchable”属性。

void QDockWindow::setMovingEnabled ( boolb ) [虚]

设置用户可不可以在锚接区域内移动锚接窗口、把锚接窗口移动到其他锚接区域、或者浮动锚接窗口为b。详细情况请参考“movingEnabled”属性。

void QDockWindow::setNewLine ( boolb ) [虚]

设置锚接窗口是否更愿意在锚接区域中新开一行为b。详细情况请参考“newLine”属性。

void QDockWindow::setOffset ( into ) [虚]

设置锚接窗口对于锚接区域的左边界(对于垂直锚接区域是上边界)首选的位移为o。详细情况请参考“offset”属性。

void QDockWindow::setOpaqueMoving ( boolb ) [虚]

设置在锚接窗口正在被移动的时候,锚接窗口是否将被正常显示为b。详细情况请参考“opaqueMoving”属性。

void QDockWindow::setOrientation ( Orientationo ) [虚 槽]

设置锚接窗口的方向为o。这个方向被发送给boxLayout()布局。

void QDockWindow::setResizeEnabled ( boolb ) [虚]

设置锚接窗口在当前的orientation()上是否是可延伸的为b。详细情况请参考“resizeEnabled”属性。

void QDockWindow::setVerticalStretchable ( boolb )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

void QDockWindow::setVerticallyStretchable ( boolb ) [虚]

See the "verticallyStretchable" property for details. 设置锚接窗口垂直方向上可否延伸为b。详细情况请参考“verticallyStretchable”属性。

void QDockWindow::setWidget ( QWidget*w ) [虚]

设置锚接窗口的主窗口为w

也可以参考boxLayout()。

void QDockWindow::undock () [虚 槽]

Undocks the QDockWindow from its current dock area if it is docked; otherwise does nothing.

也可以参考dock()、QDockArea::moveDockWindow()、QDockArea::removeDockWindow()、QMainWindow::moveDockWindow()和QMainWindow::removeDockWindow()。

void QDockWindow::visibilityChanged ( boolvisible ) [信号]

如果锚接窗口的可视性发生变化,这个信号被发射。如果visible为真,QDockWindow现在是可视的,否则它已经被隐藏。

如果锚接窗口有一个用户可点击的关闭按钮,它可以被隐藏。在QMainWindow中,通过点击在QMainWindow的锚接窗口列表的锚接窗口菜单中它的名称,锚接窗口可以有它们自己的可视性变化(隐藏或者显示)。

QWidget* QDockWindow::widget () const

返回锚接窗口的主窗口。

也可以参考setWidget()。


属性文档

int closeMode

这个属性保存的是锚接窗口的关闭模式。

定义了锚接窗口什么时候有(如果)一个关闭按钮。可以选择Never、Docked(也就是只当被锚接的时候)、Undocked(仅当被取消锚接的时候,也就是浮动时)或者Always。

默认是Never。

通过setCloseMode()设置属性值并且通过closeMode()来获得属性值。

bool horizontallyStretchable

这个属性保存的是锚接窗口水平方向上可否延伸。

如果你调用setHorizontallyStretchable(TRUE)或者setResizeEnabled(TRUE),锚接窗口是水平可延伸的。

也可以参考resizeEnabled。

通过setHorizontallyStretchable()设置属性值并且通过isHorizontallyStretchable()来获得属性值。

bool movingEnabled

这个属性保存的是用户可不可以在锚接区域内移动锚接窗口、把锚接窗口移动到其他锚接区域、或者浮动锚接窗口。

这个属性默认为真。

通过setMovingEnabled()设置属性值并且通过isMovingEnabled()来获得属性值。

bool newLine

这个属性保存的是锚接窗口是否更愿意在锚接区域中新开一行。

默认为假,也就是锚接窗口不需要在锚接区域中新开一行。

通过setNewLine()设置属性值并且通过newLine()来获得属性值。

int offset

这个属性保存的是锚接窗口对于锚接区域的左边界(对于垂直锚接区域是上边界)首选的位移。

默认为0。

通过setOffset()设置属性值并且通过offset()来获得属性值。

bool opaqueMoving

这个属性保存的是在锚接窗口正在被移动的时候,锚接窗口是否将被正常显示。

如果这个属性为假(默认),锚接窗口在被移动的时候将被表现为一个边界矩形。

工具条和锚接窗口的不透明移动已经被知道有一些问题。我们建议不要在这时使用这一点。我们将在稍后的发布中修改这个行为问题。

通过setOpaqueMoving()设置属性值并且通过opaqueMoving()来获得属性值。

Place place

这个属性保存的是锚接窗口是否在锚接区域中。

place()函数返回锚接窗口的当前位置。结果是InDock或OutsideDock。

也可以参考QDockArea::moveDockWindow()、QDockArea::removeDockWindow()、QMainWindow::moveDockWindow()和QMainWindow::removeDockWindow()。

通过place()来获得属性值。

bool resizeEnabled

这个属性保存的是锚接窗口是否是可以重新定义大小的。

可重新定义大小的锚接窗口是可以通过在锚接区域中使用像分割句柄并且当浮动时像每一个其它顶级窗口那样被重新定义大小。

如果你调用setResizeEnabled(TRUE),锚接窗口水平方向和垂直方向都是可延伸的。

默认为假。

也可以参考verticallyStretchable和horizontallyStretchable。

通过setResizeEnabled()设置属性值并且通过isResizeEnabled()来获得属性值。

bool stretchable

这个属性保存的是锚接窗口在当前的orientation()上是否是可延伸的。

这个属性可以通过使用setHorizontallyStretchable()和setVerticallyStretchable()或者setResizeEnabled()来被设置。

也可以参考resizeEnabled。

通过isStretchable()来获得属性值。

bool verticallyStretchable

这个属性保存的是锚接窗口垂直方向上可否延伸。

如果你调用setVerticallyStretchable(TRUE)或setResizeEnabled(TRUE),锚接窗口在垂直方向上是可延伸的。

也可以参考resizeEnabled。

通过setVerticallyStretchable()设置属性值并且通过isVerticallyStretchable()来获得属性值。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文