• 7081阅读
  • 10回复

信号? 槽? 传值? [复制链接]

上一主题 下一主题
离线rockyluo
 

只看楼主 倒序阅读 楼主  发表于: 2008-10-09
— 本帖被 XChinux 执行加亮操作(2008-10-12) —
  1. QComboBox  *cb[ 50 ];
  2. for( int i=0; i<50; i++)
  3. {
  4.       cb[ i ] =new QComboBox( this );
  5.       connect( cb[ i ], SIGNAL( activated( int )), this, SLOT( cb_Slot( int )));
  6. }
  7. void Form1::cb_Slot(int )
  8. {
  9.     // 我想知道是哪个cb[ i ]  发出信号触发这个槽的,敢问如何获得那个  i  值?
  10. }
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线water_wf

只看该作者 1楼 发表于: 2008-10-09
QCombox *box = qobject_cast<QCombox*>(sender());
可以设置setObjectName(QString(%1).arg(i));
box->getObjectName();就可以了
离线chaoscxm
只看该作者 2楼 发表于: 2008-10-09
新建子类继承combobox然后自定义信号把i传送i出来
帖子签名(将在每个帖子下方显示)
离线rockyluo

只看该作者 3楼 发表于: 2008-10-09
敢问 water_wf
QCombox *box = qobject_cast<QCombox*>(sender());
怎么理解?
我用的Qt3,似乎没见过这种用法
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线water_wf

只看该作者 4楼 发表于: 2008-10-09
qt3应该有的
sender()返回此signal的发送者,查下文档,确定有
离线rockyluo

只看该作者 5楼 发表于: 2008-10-09
当初我曾试图用过sender()  它是protected,调用不了
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线sbtree
只看该作者 6楼 发表于: 2008-10-09
引用第5楼rockyluo于2008-10-09 17:13发表的  :
当初我曾试图用过sender()   它是protected,调用不了

要在自身的槽中调用
windows 7 + VC++2008 + Qt4.5.2
离线water_wf

只看该作者 7楼 发表于: 2008-10-09
在slot使用sender();
protected 为啥调用不了,除非你->sender()?
直接sender()
离线rockyluo

只看该作者 8楼 发表于: 2008-10-09
void Form1::cb_Slot(int )
{
      QObject *obj =QObject::sender();   
}
报错如下:
[root@localhost hh]# make
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/home/rocky/x86-qt/qt-2.3.7/include
-o form1.o form1.cpp
form1.cpp: In member function `void Form1::cb1_Slot(int)':
form1.cpp:1338: invalid conversion from `const QObject*' to `QObject*'
form1.cpp:1338: warning: unused variable `QObject*obj'
make: *** [form1.o] Error 1
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线water_wf

只看该作者 9楼 发表于: 2008-10-09
QCombox *box = qobject_cast<QCombox*>(sender());
对你有点怕了!
离线rockyluo

只看该作者 10楼 发表于: 2008-10-10
Ok了,还得谢谢water_wf!
直接sender()
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
快速回复
限100 字节
 
上一个 下一个