• 3658阅读
  • 7回复

[提问]不同类成员之间怎么用connect连接啊? [复制链接]

上一主题 下一主题
离线yuanjq91
 

只看楼主 倒序阅读 楼主  发表于: 2012-02-11
— 本帖被 XChinux 从 论坛公告栏 移动到本区(2012-02-12) —
比如A.cpp中成员
QPushButton *button=new QPushButton(this);
B.cpp中
B::receive()
{}
那么在类A中怎么实现button clicked()发出时调用类B中的receive()啊
我的理解是在A.cpp中创建B的对象B *b = new B;
然后connect(button, SIGNAL(clicked()), b, SLOT(receive()));
发现connect有错误no matching function for call to A::connect(...) 啊???
怎么回事呢?有人能告诉我吗??

离线jdwx

只看该作者 1楼 发表于: 2012-02-11
回 楼主(yuanjq91) 的帖子
在类A和类B的实例都存在的时候将信号和槽连接起来。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线yuanjq91

只看该作者 2楼 发表于: 2012-02-11
回 1楼(jdwx) 的帖子
那么类A中的QPushButton的clicked()事件和
类B中的slot: void receive();
怎么用connect在类A构造函数中实现
离线jdwx

只看该作者 3楼 发表于: 2012-02-11
回 2楼(yuanjq91) 的帖子
一般将类B声明为类A的成员变量
a.h
#include b.h
class a
{
private:
     B   *myobjB;
};

b.cpp
a::a()
{
myobjb = new B;
connect(button,SIGNAL(clicked()),myobjb,SLOT(receive())):
}
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线yuanjq91

只看该作者 4楼 发表于: 2012-02-11
回 3楼(jdwx) 的帖子
真谢谢啊 其实我也是这样做的呢 但是就是报错
network.h
class network
{
     public slots:
         void sendButtonClicked();
}
lanChat.cpp
lanChat::lanChat(QWidget *parent)  : QWidget(parent)
{
net = new network;
sendButton = new QPushButton(tr("发送"), this);
connect(sendButton, SIGNAL(clicked()), net, SLOT(sendButtonClicked()));
}
错误:no matching function for call to 'lanChat::connect(QPushButton*&, const char*, network*&, const char*)'
受不了了啊!!
离线jdwx

只看该作者 5楼 发表于: 2012-02-11
回 4楼(yuanjq91) 的帖子
哦,首先要使用信号和槽,必须是QObject的子类,估计你的问题就在这里。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线yuanjq91

只看该作者 6楼 发表于: 2012-02-11
有理 我来试试
离线yuanjq91

只看该作者 7楼 发表于: 2012-02-11
回 5楼(jdwx) 的帖子
问题得到解决 是要QObject的子类才行 谢谢你啊~ jdwx
快速回复
限100 字节
 
上一个 下一个