• 5665阅读
  • 6回复

[提问]Qt自动连接信号和槽的问题 [复制链接]

上一主题 下一主题
离线17611904
 
只看楼主 倒序阅读 楼主  发表于: 2011-06-10
在demo的/Qt designer/Calculator Builder中,讲到了
QMetaObject::connectSlotsByName(this);
来自动连接命名为:
void on_<object name>_<signal name>(<signal parameters>)的槽,
但是后来再看
/Qt Designer/Calculator Form的demo时,也同样是用自动链接信号和槽,
但是并没有用那个元对象,那么这个例子是如何自动链接信号和槽的呢?

例子代码太多,大家都有Qt demo的,我就不贴了,麻烦大家看看。
离线17611904
只看该作者 1楼 发表于: 2011-06-10
没人回答吗?
离线ppdayz

只看该作者 2楼 发表于: 2011-06-10
在这个文件里"ui_calculatorform.h"。。找下就可以了
离线17611904
只看该作者 3楼 发表于: 2011-06-10
回 2楼(ppdayz) 的帖子
还是不太懂~~我想知道Qt是在什么条件下自动连接信号和槽的。
离线ppdayz

只看该作者 4楼 发表于: 2011-06-10
回 3楼(17611904) 的帖子
其实也不是自动连接的
看这个的说明
void QMetaObject::connectSlotsByName ( QObject * object ) [static]
这个函数遍历object 的所有children,然后按照
void on_<object name>_<signal name>(<signal parameters>);
比如:
void on_button1_clicked();
就是找object name为button1的QPushButton ,然后QPushButton 有信号clicked,就连起来了

这个一般designer中用的多,自己写代码一般不用不到的,因为自己写的函数名都千奇百怪的,而且一般都不设置object的名字的
离线17611904
只看该作者 5楼 发表于: 2011-06-12
回 4楼(ppdayz) 的帖子
对啊,但是在这个demo里:
/Qt Designer/Calculator Form的demo时,也同样是用自动链接信号和槽,

但这里只是用了那个命名格式,但是并没用元对象的connectSlotsByName.
所以我不明白这里为何还能自动链接上?
离线dbzhang800

只看该作者 6楼 发表于: 2011-06-12
Re:回 4楼(ppdayz) 的帖子
引用第5楼17611904于2011-06-12 13:43发表的 回 4楼(ppdayz) 的帖子 :
对啊,但是在这个demo里:
/Qt Designer/Calculator Form的demo时,也同样是用自动链接信号和槽,
但这里只是用了那个命名格式,但是并没用元对象的connectSlotsByName.
所以我不明白这里为何还能自动链接上?

2 楼已经告诉你答案了。不是没用,只是被你忽略了!
快速回复
限100 字节
 
上一个 下一个