• 6136阅读
  • 6回复

[提问]信号与槽在两个类之问调用的问题 [复制链接]

上一主题 下一主题
离线wx_huang
 
只看楼主 倒序阅读 楼主  发表于: 2012-02-22
//最近在Ubuntu下学Qt我用的IDE是eclipse C++。遇到了个问题一直想不通,Qt和C++的函数调用不同,是用于信号和槽机制来完成的。在同一个类里用connect()函数可以成功能调用函数,但我想在类1中用connect()去调用类B中的函数,做了好久都没做成功,希望大神们出来帮帮忙。最好发个完整简单能说明问题的例子 谢谢
离线kalxd

只看该作者 1楼 发表于: 2012-02-22
QPushButton *button=new QPushButton;
connect(button,SIGNAL(clicked()),button,SLOT(close()));
离线wx_huang
只看该作者 2楼 发表于: 2012-02-22
您说的只是在同一个类中调用的函数,我想要的結果是:
类A中有一个Button在connect()发个信号去响应类B中的函数。如:
QPushButton *button=new QPushButton;
connect(button,SIGNAL(clicked()),这个对象怎么写,SLOT(槽函数是类B中的));
离线zhaojinghao
只看该作者 3楼 发表于: 2012-02-22
在类A中加上类B的头文件,然后在类A中实例化一个类B的指针,像下面这样试试:

#include "类B.h"

类B *b = new 类B;

QPushButton *button=new QPushButton;

connect(button,SIGNAL(clicked()),b,SLOT(类B中的public槽函数));
离线roywillow

只看该作者 4楼 发表于: 2012-02-22
如果你是在一个QObject的子类中来连接其中的两个成员A和B,那么可以直接在这个子类的实现中调用connect(A, SIGNAL(信号), B, SLOT(槽))
或者干脆调用QObjcect::connect(blablabla),我记得connect是QObject的一个静态函数

不要想让谁去响应谁,信号和槽的连接最好理解成在sender和receiver之外的一个过程
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 5楼 发表于: 2012-02-22
在A和B都实例化了以后,可以同时使用A和B的任何地方,都可以connect
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wx_huang
只看该作者 6楼 发表于: 2012-02-23
thanks everybody!!
快速回复
限100 字节
 
上一个 下一个