迷途的小羊求助

syai 2012-03-17 01:51:08
在qt中的connect函数
bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection )

中的sender与signal函数是如何是别的,
receiver 与 slot函数是如何识别;
例如把:
for(int i = 0; i< MAXNUM ;i++)
spinBox = new QSpinBox[MAXNUM];
spinBoxSpd = new QSpinBox[MAXNUM];
{
connect(slider+i,SIGNAL(valueChanged(int)),spinBox+i,SLOT(setValue(int)));
connect(spinBox+i,SIGNAL(valueChanged(int)),slider+i,SLOT(setValue(int)));
connect(spinBox+i,SIGNAL(valueChanged(int)),this,SLOT(setmySliderData(int)));
connect(spinBoxSpd+i,SIGNAL(valueChanged(int)),SLOT(updateSpeed(int)));

}

这段代码中在setvalue(int)中识别他的接受者spinBox+i是数组spinBox中的第几个呢?
虽然我有点菜希望大家先帮我回答了再鄙视呵呵呵。。。
...全文
116 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lexdene 2012-03-20
  • 打赏
  • 举报
回复
信号和槽没有本质区别,
不需要区分。
dext 2012-03-18
  • 打赏
  • 举报
回复
数组中的每一个元素并不是指针~
jdwx 2012-03-17
  • 打赏
  • 举报
回复
说了这么半天,是不是要知道是那个object发射的信号啊?
wopabe 2012-03-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 tangcaizhi 的回复:]
在qt中的connect函数C/C++ code
bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection )

中的sender……
[/Quote]
把话说清楚点,尊重下读者,这样才可能给你解答啊
atomicink 2012-03-17
  • 打赏
  • 举报
回复
语死早?我看了3遍没看懂说的啥。
for循环里, slider+i和spinBox+i的i当然是同一个值。
syai 2012-03-17
  • 打赏
  • 举报
回复

[Quote=引用 2 楼 storylsl 的回复:]

没有完全明白你说的啥意思
估计你是信号和槽还理解的不深吧
你说的识别的意思我理解的你是不是要问怎么一个函数就是信号,一个函数就是槽函数?
这样的话信号和槽在类的声明的时候都是定义好的,signal:定义的函数是信号,slot:定义的是槽函数。
信号是用来发射的,可以带参数,槽函数首先就是一个普通的函数,你可以像正常的函数一样使用它。
信号函数声明后不必去实现,到哪是槽函数声明后是必须得……
[/Quote]

我把那个粘贴错了

spinBox = new QSpinBox[MAXNUM];
spinBoxSpd = new QSpinBox[MAXNUM];
for(int i = 0; i< MAXNUM ;i++)
{
connect(slider+i,SIGNAL(valueChanged(int)),spinBox+i,SLOT(setValue(int)));
connect(spinBox+i,SIGNAL(valueChanged(int)),slider+i,SLOT(setValue(int)));
connect(spinBox+i,SIGNAL(valueChanged(int)),this,SLOT(setmySliderData(int)));
connect(spinBoxSpd+i,SIGNAL(valueChanged(int)),SLOT(updateSpeed(int)));

}

我说的是
还有那个signal和slot之间传递参数我知道,
我不明白的是 这receiver是我定义的slider+i数组的其中一个好元素,我在写槽函数时候要对从valueChanged(int) 函数传递来的那个整型的数赋值给我所对应的slider+i但是我怎么知道这个信号的发出者(spinBox+i)中i是啊,后者说是receiver(slider+i) 的i是几啊?
谢谢楼上的,希望前辈门来拉一把我们后辈的。。。
我是学友 2012-03-17
  • 打赏
  • 举报
回复
没有完全明白你说的啥意思
估计你是信号和槽还理解的不深吧
你说的识别的意思我理解的你是不是要问怎么一个函数就是信号,一个函数就是槽函数?
这样的话信号和槽在类的声明的时候都是定义好的,signal:定义的函数是信号,slot:定义的是槽函数。
信号是用来发射的,可以带参数,槽函数首先就是一个普通的函数,你可以像正常的函数一样使用它。
信号函数声明后不必去实现,到哪是槽函数声明后是必须得去实现的
还有你问的第二个问题为什么能选中第几个,这就是信号和槽之间connect之后能够传递数据,就相当于复制粘贴一样,前提是connect的信号和槽函数参数要一致。比如你emit一个信号里面的参数是4,那么你和他相连的槽函数收到的数据也就是4了
至于对象的问题,那就一时半会也说不清了。总之信号和槽机制十分的强大,熟练掌握后机会没有办不到的,最好是多看看信号和槽机制的基础
楼主好运啊
看在打这么多字的份上,给点分吧
syai 2012-03-17
  • 打赏
  • 举报
回复
在线等,。。。

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧