【Qt笔记】QAction与QToolButton的关联

QAction可以理解为一个动作数据,包含了这个同坐相关的图标、文本、是否可用等数据和状态,以及连接对应的槽函数,用于执行这个动作。

QToolButton则可以使用QAction对象作为后端,显示这个QAction的图标,关联其是否可用的状态。

 

简单示例:

QAction *exampleAction = new QAction(parent);

... (省略了设置其图标,文本,槽函数等代码)

QToolButton *exampleButton = new QToolButton(parent);

exampleButton->setDefaultAction(exampleAction);  // 将 exampleButton 与 exampleAction 关联起来

 

转载于:https://www.cnblogs.com/pplxlee/p/11109263.html

### 如何从 QToolBar 中获取某个 QAction 关联QToolButton 在 PyQtQt 的开发过程中,可以通过遍历 `QToolBar` 上的所有子部件来找到特定 `QAction` 关联的 `QToolButton`。以下是实现这一功能的具体方法: 通过调用 `QToolBar.widgetForAction(action)` 方法可以直接返回指定 `QAction` 对应的 `QToolButton` 实例[^2]。 如果需要手动实现此过程,则可以利用以下逻辑: 1. 遍历 `QToolBar` 的所有子部件。 2. 判断这些子部件是否为 `QToolButton` 类型。 3. 调用 `QToolButton.defaultAction()` 来验证该按钮绑定的动作是否为目标 `QAction`。 #### 示例代码 ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBar, QAction, QToolButton app = QApplication([]) class MainWindow(QMainWindow): def __init__(self): super().__init__() toolbar = QToolBar() self.addToolBar(toolbar) action_smile1 = QAction("Smile1", self) action_smile2 = QAction("Smile2", self) toolbar.addAction(action_smile1) toolbar.addAction(action_smile2) # 获取 action_smile1 关联QToolButton tool_button = toolbar.widgetForAction(action_smile1) # 使用 widgetForAction 方法 if isinstance(tool_button, QToolButton): print(f"Found Tool Button with text: {tool_button.text()}") window = MainWindow() window.show() app.exec_() ``` 上述代码展示了如何使用 `widgetForAction` 方法直接定位到目标 `QToolButton` 并打印其文本属性。 此外,在某些情况下可能无法直接依赖于 `widgetForAction` 方法(例如自定义工具栏布局),此时可采用迭代法逐一检查每个 `QToolButton` 是否匹配给定的 `QAction`[^4]。 ### 注意事项 当尝试访问或修改由标准框架创建的对象时,请始终确认当前环境支持所选操作模式,并注意不同版本间 API 行为可能存在差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值