Qt 静态函数QMetaObject::connectSlotsByName(QObject * object)按命名规则自动connect,不需要手动connect

看别人代码看到void on_MyWidget_slotTest();

就郁闷了,没看到他代码里有connect 却能把信号和槽可以连接起来。

今日回顾书本发现该函所的nb之处。

QMetaObject::connectSlotsByName(QObject * object)将递归的搜寻传入的Qt对象object的所有子对象,并把所有匹配的子对象的信号关联到object对象的符合下列规则的槽函数void on_<窗口部件名称>_<信号名称>(<信号参数>)

如果窗口部件已经提供信号Qt可以自动关联。

[cpp] view plaincopyprint?

  1. //申明
  2. class MyClass
  3. {
  4. public slots:
  5. void on_myPushButton_clicked();
  6. };
  7. //实现
  8. void MyClass::on_myPushButton_clicked()
  9. {
  10. }

这样子就会自动关联。。真是惭愧,看书不细。

参考:http://blog.csdn.net/kfbyj/article/details/8878969

---------------------------------------------------------------------------------

怪不得UI生成的函数名称都是 void MainWindow::on_pushButton_6_clicked()都不需要connect(按钮的名称是pushButton_6),原来是自动连接了,我原来还纳闷并专门发帖问过,也没有人明确给出答案。。。

但是这里也有一个问题,如果这个信号需要多个参数怎么办?这个connectSlotsByName只能传一个参数,或者不传参数。。。

时间: 2025-01-09 12:35:40

Qt 静态函数QMetaObject::connectSlotsByName(QObject * object)按命名规则自动connect,不需要手动connect的相关文章

QMetaObject::connectSlotsByName 总结

<<总结之一> =================================================================================================== 查看Qt4的一些示例项目的时候,使用设计器打开其UI文件,在文件中竟然找不到signal和slot的连接.但是最终的程序,slot却又能准确的响应信号.打开通过ui文件自动生成的c++文件,其中也找不到connect语句,到底是怎么一回事? 经过逐语句的分析.终于发现连接的原

qt QMetaObject::connectSlotsByName()自动关联失效问题解决

自己编写qt程序的时候,想使用qt on_objectName_signalName()命名规则自动关联信号和槽,老是发现失效.多方求解,答案事实上很简单就是没有理解objectName的含义. on_objectName_signalName(signalParameters):仔细看好是objectName而不是变量名,一个控件的变量名和objectName是不同的.需要这样改:    pushButton = new QPushButton(tr("ok"));    pushB

详解 Python 中的下划线命名规则

在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后……那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单下划线(_)会在以下3种场景中使用: 1.1 在解释器中: 在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果.这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用. >>> _ Traceback (most recent call last): Fil

JavaScript标识符--------命名规则及其保留字

JavaScript的两种注释格式: 1. //这里是单行注释 2. /*这里是一段注释*/ 3. /*这里是 *多行注释 */ 标识符命名: 标识符,通俗的讲就是一个名字,可以用来对变量和函数进行命名,例如: 命名变量名: var luckname='weille'; //=>luckname就是这个变量luckname的标识符 命名函数名: function facename() { //=>facename就是这个函数facename的标识符 } 命名规则: 1.必须要以字母.下划线(_

文件命名规则

网站文件命名规则 关于文件的命名,看似无足重轻,但实际上如果没有良好的命名规则进行必要的约束,一味的乱起名称,最终导致的结果就是整个网站或是文件夹无法管理.所以,命名规则在这里同样非常重要. 需要特别注意的时候,网站文件或文件夹命名请尽量避免使用中文字符命名. 文件的命名 以最少的字母达到最容易理解的意义. 索引文件统一使用index.html文件名(小写) index.html文件统一作为"桥页",不制作具体内容,仅仅作为跳转页和meta标签页.主内容页为main.html. 按菜单

C++变量命名规则

转自:http://www.cnblogs.com/finallyliuyu/archive/2010/09/25/1834301.html 浅谈C++变量命名规则 不知道别的公司如何,反正我现在的公司对变量命名并没有一定的规范,唯一要求就是能简单易懂,但是,我想,这个多个程序员,大概每个人都有自己习惯的一套 命名规则吧,不过,要是并不通用的话,大概看别人的程序会很头疼吧,SO 为了别人看偶的程序不至于太头疼,偶决定找个通俗的命名法来参考下,于是,搜到了匈牙利命名法... 匈牙利命名法的来历和介

PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键

PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner 快捷工具栏 palette 不见了,怎么重新打开,找回来呢 上网搜索了一下"powerdesigner 图形工具栏",找到了找回PowerDesigner工具栏palette的方法Tools(工具栏)customsize toolbars(自定义工具栏)palette(调色板)勾选 2.

【基础篇】各类语言的变量命名规则

----------------------------------------------JAVA----------------------------------------------- JAVA-区分大小写:类名和接口名是首字母大写:变量和方法是驼峰式:包名完全小写:静态变量完全大写 1. Package(包)命名: 完全小写 | 例如net.ebseries.modules. 2. Class(类)命名:首字母大写 | 多个单词合成,要求每个单词的首字母也要大写,例如:DataFil

《疯狂Java讲义(第3版)》.(李刚)——java命名规则及编码规范

1.命名规则: 此处借鉴一下他人的资料,比较全面一些,方便了解学习. JAVA源文件的命名 JAVA源文件名必须和源文件中所定义的类的类名相同. Package的命名 Package名的第一部分应是小写ASCII字符,并且是顶级域名之一,通常是com.edu.gov.mil.net.org或由ISO标准3166.1981定义的国家唯一标志码.Package名的后续部分由各组织内部命名规则决定,内部命名规则指定了各组件的目录名,所属部门名.项目名等. Class/Interface的命名 Clas