Qt 是不是不能直接连接其它控件的槽函数?

王桑的一天 2019-08-12 03:22:09
比如有几个控件,他们从左到右是父子关系:

A,B,C,D

B收到A的某信号后,要调用D的槽函数

如果是PyQt/PySide,那可以直接这样写:

# 在 B 类中
a.clicked.connect(c.d.slotFunction)


但在Qt里好像不能这样写,槽函数不会响应的

// class B中
connect(a, &A::clicked, c->d, &D::slotFunction);


我需要在B, C, 中都新建一个clicked 信号,来层层转发 A的clicked信号 ,最终绑定C的clicked 信号和 D.slotFunction, 这样是OK的。

我这样做对不对?有什么更好的办法 ?



...全文
246 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
王桑的一天 2019-08-14
  • 打赏
  • 举报
回复
引用 2 楼 彩阳 的回复:
你的PySide 是不是将d作为c的一个property了?这样可以直接调用c.d。 要不然是不能这么做的。
d 是 c的一个成员
彩阳 2019-08-13
  • 打赏
  • 举报
回复
你的PySide 是不是将d作为c的一个property了?这样可以直接调用c.d。 要不然是不能这么做的。
弓人水 2019-08-12
  • 打赏
  • 举报
回复
不需要层层转发,a信号直接可以绑定d的槽函数。
在b里面没绑定成功,有可能c和d对象还没有建立,你就进行绑定了,最好检查一下,connect的时候确保c和d已经new出来了。

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧