简 述: 解释如下几个信号的区别
- QAbstractButton:①clicked ② pressed ③ released ④ toggled
- QToolButton:① triggered
- QAction:① changed ② hovered ③ toggled ④ triggered
[TOC]
本文初发于 “偕臧的小站“,同步转载于此。
大纲
QAbstractButton / QToolButton / QAction 的信号差异
类 | 信号 |
---|---|
QAbstractButton | void clicked(bool checked = false) |
QAbstractButton | void pressed() |
QAbstractButton | void released() |
QAbstractButton | void toggled(bool checked) |
QToolButton | void triggered(QAction *action) |
QAction | void changed() |
QAction | void hovered() |
QAction | void toggled(bool checked) |
QAction | void triggered(bool checked = false) |
QAbstractButton 的四个信号
clicked(bool checked):鼠标松开时触发。如果鼠标拖拽到按钮区域之外释放则不会触发。对应的函数是 *mouseReleaseEvent()*。一般情况下 connect 槽函数时使用该信号。
pressed(): 鼠标按下时,发射信号。对应 mousePressEvent()
released():鼠标松开时,发射信号。即使鼠标拖拽到按钮区域之外释放也会触发。对应 mouseReleaseEvent()
toggled(bool checked):设置 setCheckable(true) 后再单击按钮才会触发该信号
正常情况下单击按钮,响应顺序为:pressed() — about 215ms — released() — almost 0ms — *clicked()*。
QToolButton 的一个信号
- triggered(QAction *action):给定的 QAction 被触发时,发射信号
QAction 的四个信号
- changed():action 发生改变时,发射信号
- hovered():光标一移动到该 item 的范围中,一覆盖在上面即会触发此信号。
- toggled(bool checked):设置 setCheckable(true) 后再单击按钮才会触发该信号。
- eg:checkable 被修改状态(勾选☑、或未勾选⬜),都会触发此信号。当使用函数
setChecked()
时,同样会触发此信号。 - 实测在 QSystemTrayIcon 的 menu 中添加 QAction;使用此 toggled 信号,但是却不会被触发对应槽函数?甚是奇怪。已改用 triggered 来代替完成功能。
- eg:checkable 被修改状态(勾选☑、或未勾选⬜),都会触发此信号。当使用函数
- triggered(bool checked):点击 菜单栏、 toolbar按钮、或者action 的快捷键,都可以触发此信号。但是如果调用
setChecked()
、toggle()
等函数,则不会触发。
系列地址
欢迎 star
⭐ 和 fork
🍴 这个系列的 C++ / QT / DTK
学习,附学习由浅入深的目录,这里你可以学到如何亲自编写这类软件的经验,这是一系列完整的教程,并且永久免费!”