zoukankan      html  css  js  c++  java
  • Qt 静态函数QMetaObject::connectSlotsByName(QObject * object)按命名规则自动connect,不需要手动connect

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

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

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

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

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

            

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

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

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

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

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

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

  • 相关阅读:
    感觉每天打开自己的博客园, 想编程的心情就多了起来~~~
    算法图解相关代码整理
    github cli
    What's WebFlux ? And how to use it ? 一股有咖喱味的WebFlux简介
    style
    gradle 1
    gradle打包可运行jar
    外面下着雨
    天晴朗 看花儿多多开放
    Full Stack Reactive with React and Spring WebFlux
  • 原文地址:https://www.cnblogs.com/findumars/p/4700108.html
Copyright © 2011-2022 走看看