鱼C论坛

 找回密码
 立即注册
查看: 3820|回复: 10

[技术原创] 104-自定义信号与槽

[复制链接]
发表于 2016-10-21 14:24:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2016-10-26 17:11 编辑

这次通过一个简单的例子来进一步讲解信号和槽的相关知识。

实现效果是:

在主界面创建一个对话框->

这个对话框可以输入数值->

当用户单击‘确认’btn->

关闭对话框并且将用户输入的数值通过信号发射出去->

在主界面接收该信号并且显示数值。

另外一个比较有趣的点就是,人工添加'Qt设计使界面类'

好了,上程序~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

0.jpg

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

9.jpg

10..jpg

11.jpg

12.jpg

13.gif


游客,如果您要查看本帖隐藏内容请回复


本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-26 16:46:43 | 显示全部楼层
Qt不能自己定义一个信号吗?
pyqtSignal
这个函数是目前为止查文档第一个没有跳转到c++文档而给出了python函数示例的函数。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 17:11:04 | 显示全部楼层
wei_Y 发表于 2016-10-26 16:46
Qt不能自己定义一个信号吗?
pyqtSignal
这个函数是目前为止查文档第一个没有跳转到c++文档而 ...

Qt不能自己定义信号…
程序猿可以…

你下一句没明白…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-26 18:05:37 | 显示全部楼层
不二如是 发表于 2016-10-26 17:11
Qt不能自己定义信号…
程序猿可以…


额...就是我本来想自己定义一个信号,比如某变量值是多少的时候就发出这个信号。
然后翻文档时看到定义的这个函数——pyqtSignal,并没有出现c++的文档。

好吧,看图!
360截图20161026181928951.jpg
这是PYQT文档,一般查询就会出现 c++ documentation.

然而这次点进去就会直接出现函数介绍。
360截图20161026182003544.jpg

360截图20161026182109671.jpg

额...就是这样。

因为很想知道信号在内部是怎么执行的。

虽说python是开源的,可以看源码,但是PYQT这货只提供DLL文件。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-27 09:08:31 | 显示全部楼层
wei_Y 发表于 2016-10-26 18:05
额...就是我本来想自己定义一个信号,比如某变量值是多少的时候就发出这个信号。
然后翻文档时看到定 ...

那你的中心论点是想要自定义一个 :当变量为某值时。自动发出一个signal

然后你发散思维去寻找,,,找到了个pyqtSignal,然后就被为什么不是c++文档迷惑住了。。。

最终你思考信号在内部如何执行。。。

知道你发现所有的源码被编进dll

那么。。。。。。。。。。。

一开始那个问题很好解决,价格判断Judge_signal(int a){if a = n;触发就行,,,很简单 }

后面衍生的那些,俺也无能为力,在底层的机器码,有必要搞得太清楚不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-27 16:09:55 | 显示全部楼层
不二如是 发表于 2016-10-27 09:08
那你的中心论点是想要自定义一个 :当变量为某值时。自动发出一个signal

然后你发散思维去寻找,,, ...

不...其实一开始很想知道 QT内部是如何进行一个信号发射的,
虽然一般QT给的信号完全够用。

我想了两种构思:
0.  就像是一个不间断执行的定时器,一直判断是否有左键点击(clicked)啊,某值改变(valueChanged)啊这样。


1.  当这个玩意执行时——自己给连接的东西说一声,就好像变量改变了,然后这个变量在改变时给连接了它的函数说一声我要变化了。

感觉1.这个构思很接近,然后我就想自己实现看看,
比如我要做clicked这个信号——我要判断是否是左键这类。
下面我就要判断了——加QTimer判断 or 鼠标事件判断。
——其实就是0里的构思啊!!!
然后就想看看QT有没有更巧妙的办法实现。

不过一直没做——直到我需要自定义信号的时候—— 正好可以看看QT文档里的详细介绍(我是这么想的)——结果只查到pyqtSignal——!!!难道是只给PYQT开发的新功能!?——于是就来问问咯。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-28 10:31:14 | 显示全部楼层
wei_Y 发表于 2016-10-27 16:09
不...其实一开始很想知道 QT内部是如何进行一个信号发射的,
虽然一般QT给的信号完全够用。

从两种构思
你不是已经把自己提出的‘问题’解决了吗。。。

pyqtSignal很有可能基于python的Gui为原型,做得类Qt信号和槽系统



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 12:56:09 | 显示全部楼层
不二如是 发表于 2016-10-28 10:31
从两种构思
你不是已经把自己提出的‘问题’解决了吗。。。

只是顺着我自己的构思解决的,
想看看QT实现的原理嘛。。

就是懒得下载QT,想到你可能讲到这个知识点,然后就来看看咯。

然后就发现没有,进一步发现QT里居然没有这个玩意——不吐槽会死星人模式启动!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-28 13:24:46 | 显示全部楼层
wei_Y 发表于 2016-10-28 12:56
只是顺着我自己的构思解决的,
想看看QT实现的原理嘛。。

101里面那个原型,已经是Qt下所有信号和槽的核心了
在底层…我怕误人子弟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 13:43:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-23 16:33:26 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 13:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表