QDockWidget提供了dock widget的概念,也称为工具面板或实用窗口。Dock窗口是放置在QMainWindow中围绕中心窗口组件的Dock窗口组件区域中的次要窗口,QDockWidget是可以在QMainWindow窗口停靠,或在桌面最上层浮动的界面组件。
停靠窗口可以被移动到当前区域,移动到新的区域,并被终端用户浮动(例如,未停靠)。QDockWidget API允许程序员限制停靠部件移动、浮动和关闭的能力,以及可以放置它们的区域。
QDockWidget由标题栏和内容区域组成。标题栏显示了dock widgets窗口标题、一个浮动按钮和一个关闭按钮。根据QDockWidget的状态,浮动和关闭按钮可能是禁用的,也可能根本不显示。
常用函数
- allowedAreas() const:可以放置停靠部件的区域;
- features() const:这个属性保存了dock部件是否可移动、可关闭和可浮动;
- isAreaAllowed(Qt::DockWidgetArea area) const:如果停靠部件可以放置在给定区域,返回true;否则返回false;
- isFloating() const:这个属性保存着dock部件是否在浮动;
- setAllowedAreas(Qt::DockWidgetAreas areas):设置可以放置停靠部件的区域;
- setFeatures(QDockWidget::DockWidgetFeatures features):这个属性保存了dock部件是否可移动、可关闭和可浮动,默认情况下,这个属性被设置为DockWidgetClosable、DockWidgetMovable和DockWidgetFloatable的组合;
- setFloating(bool floating):设置这个dock部件是否浮动;
- setTitleBarWidget(QWidget *widget):将任意一个小部件设置为dock小部件的标题栏,如果widget为nullptr,先前在dock widget上设置的任何自定义标题栏widget都会被移除,但不会被删除,而是使用默认的标题栏;
- setWidget(QWidget *widget):将dock widget设置为widget;
- titleBarWidget() const:返回在QDockWidget上设置的自定义标题栏小部件,如果没有设置自定义标题栏,则返回nullptr;
- toggleViewAction() const:返回一个可检查的操作,可以添加到菜单和工具栏中,以便用户可以显示或关闭这个停靠部件;
- widget() const:返回dock组件的组件。如果部件没有被设置,这个函数返回0;
- void initStyleOption(QStyleOptionDockWidget *option) const:用这个QDockWidget的值初始化选项。当子类需要QStyleOptionDockWidget,但不想自己填写所有信息时,此方法很有用;
信号
- allowedAreasChanged(Qt::DockWidgetAreas allowedAreas):当allowedAreas属性发生变化时,就会发出这个信号。allowedAreas参数给出了属性的新值;
- dockLocationChanged(Qt::DockWidgetArea area):当停靠部件被移动到另一个停靠区域,或者移动到当前停靠区域的不同位置时,就会发出这个信号;
- featuresChanged(QDockWidget::DockWidgetFeatures features):当features属性发生变化时,就会发出这个信号;
- topLevelChanged(bool topLevel):当浮动属性发生变化时,就会发出这个信号;
- visibilityChanged(bool visible):当dock组件变得可见(或不可见)时,就会发出这个信号,当窗口组件隐藏或显示时,以及当窗口组件停靠在选项卡停靠区域且其选项卡被选中或被取消选中时,都会发生这种情况;
事件
- changeEvent(QEvent *event) override;
- closeEvent(QCloseEvent *event) override;
- event(QEvent *event) override;
- paintEvent(QPaintEvent *event) override;