概述
文章目录
- 详细说明
- 公共函数
- 构造和析构
- 其它
- 受保护的函数
- 重写的受保护的函数
QWidgetAction Class
QWidgetAction类通过一个接口扩展了QAction,该接口用于将自定义小部件插入基于操作的容器(如工具栏)中。
Header | #include < QWidgetAction > |
---|---|
qmake | QT += widgets |
Inherits | QAction |
Inherited By |
详细说明
应用程序中的大多数操作都表示为菜单中的项或工具栏中的按钮。但是有时需要更复杂的小部件。例如,字处理器中的缩放动作可以使用QToolBar中的QComboBox来实现,QComboBox表示不同缩放级别的范围。QToolBar提供QToolBar::insertWidget() 作为插入单个小部件的便利函数。但是,如果您想要实现一个在多个容器中使用自定义小部件进行可视化的操作,那么您必须将QWidgetAction子类化。
例如,如果将QWidgetAction添加到QToolBar,则调用QWidgetAction::createWidget() 。该函数的重新实现应该使用指定的父级创建一个新的自定义小部件。
如果从容器小部件中删除了该操作,那么将使用先前创建的自定义小部件作为参数调用QWidgetAction::deleteWidget() 。默认实现隐藏小部件并使用QObject::deleteLater() 将其删除。
如果只有一个自定义小部件,那么可以使用setDefaultWidget() 将其设置为默认小部件。如果将操作添加到QToolBar,或者通常添加到支持QWidgetAction的操作容器中,则将使用该小部件。如果一个只有默认小部件的QWidgetAction同时添加到两个工具栏中,那么默认小部件只显示在该操作添加到的第一个工具栏中。QWidgetAction接管默认小部件的所有权。
请注意,由小部件来激活操作,例如通过重新实现鼠标事件处理程序和调用QAction::trigger() 。
macOS:如果在macOS上向应用程序菜单栏中的菜单添加小部件,则会添加该小部件并使其正常工作,但有一些限制:
- 小部件将从QMenu重新租入本机菜单视图。如果您在其他地方显示菜单(例如弹出菜单),小部件将不在那里。
- 小部件的焦点/键盘处理是不可能的。
- 由于苹果公司的设计,目前该小部件上的鼠标跟踪功能不起作用。
- 将triggered() 信号连接到打开模式对话框的插槽将导致macOS 10.4崩溃(Apple已确认已知错误),解决方法是使用QueuedConnection而不是DirectConnection。
公共函数
构造和析构
- QWidgetAction(QObject *parent)
- virtual ~QWidgetAction()
其它
- QWidget * defaultWidget() const
void setDefaultWidget(QWidget *widget) - void releaseWidget(QWidget *widget)
- QWidget * requestWidget(QWidget *parent)
受保护的函数
-
virtual QWidget * createWidget(QWidget *parent)
每当将操作添加到支持自定义小部件的容器小部件时,就会调用此函数。如果不希望自定义小部件用作指定父小部件中操作的表示,则应返回0。
-
QList<QWidget *> createdWidgets() const
-
virtual void deleteWidget(QWidget *widget)
重写的受保护的函数
- virtual bool event(QEvent *event) override
- virtual bool eventFilter(QObject *obj, QEvent *event) override
最后
以上就是明理歌曲为你收集整理的主窗口(10):【类】QWidgetAction [官翻] QWidgetAction Class 详细说明公共函数受保护的函数重写的受保护的函数的全部内容,希望文章能够帮你解决主窗口(10):【类】QWidgetAction [官翻] QWidgetAction Class 详细说明公共函数受保护的函数重写的受保护的函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复