迷途的小羊求助在qt中的connect函数C/C++ codebool QObject::connect ( const QObject * sender, const ch
迷途的小羊求助
在qt中的connect函数
C/C++ codebool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection )
中的sender与signal函数是如何是别的,
receiver 与 slot函数是如何识别;
例如把:
C/C++ codefor(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中的第几个呢?
虽然我有点菜希望大家先帮我回答了再鄙视呵呵呵。。。
[解决办法]没有完全明白你说的啥意思
估计你是信号和槽还理解的不深吧
你说的识别的意思我理解的你是不是要问怎么一个函数就是信号,一个函数就是槽函数?
这样的话信号和槽在类的声明的时候都是定义好的,signal:定义的函数是信号,slot:定义的是槽函数。
信号是用来发射的,可以带参数,槽函数首先就是一个普通的函数,你可以像正常的函数一样使用它。
信号函数声明后不必去实现,到哪是槽函数声明后是必须得去实现的
还有你问的第二个问题为什么能选中第几个,这就是信号和槽之间connect之后能够传递数据,就相当于复制粘贴一样,前提是connect的信号和槽函数参数要一致。比如你emit一个信号里面的参数是4,那么你和他相连的槽函数收到的数据也就是4了
至于对象的问题,那就一时半会也说不清了。总之信号和槽机制十分的强大,熟练掌握后机会没有办不到的,最好是多看看信号和槽机制的基础
楼主好运啊
看在打这么多字的份上,给点分吧
[解决办法]语死早?我看了3遍没看懂说的啥。
for循环里, slider+i和spinBox+i的i当然是同一个值。
[解决办法][解决办法]说了这么半天,是不是要知道是那个object发射的信号啊?
[解决办法]数组中的每一个元素并不是指针~
[解决办法]信号和槽没有本质区别,
不需要区分。