• 4645阅读
  • 1回复

QT中信号槽复用的问题 [复制链接]

上一主题 下一主题
离线snhk11y
 

只看楼主 正序阅读 楼主  发表于: 2010-07-19
各位高手,我被一个问题困扰很久了,大家帮忙啊

一个按钮的一个clicked信号可以调用一个槽函数,这样的情况下,按钮少的情况下还可以,按钮太多的时候是不是太麻烦呢?

假如现在有一百个按钮,对应一百个槽函数,每个槽函数只需要进行简单的一个赋值,我想只用一个信号槽通过信号传递的方式就实现所有的赋值,不知道有没有什么好的方法?或者退而求其次,虽然使用100个信号槽连接,但通过参数传递只调用一个槽函数来实现所有的赋值,能否实现呢?



以100个按钮,对应100个赋值槽函数举例说明如下:

信号槽连接
{
int value[100];
connect(exam->pushButton_2,SIGN(clicked()),this,SLOT(assignment2()));
connect(exam->pushButton_3,SIGN(clicked()),this,SLOT(assignment3()));
connect(exam->pushButton_4,SIGN(clicked()),this,SLOT(assignment4()));
.............................
connect(exam->pushButton_97,SIGN(clicked()),this,SLOT(assignment97()));
connect(exam->pushButton_98,SIGN(clicked()),this,SLOT(assignment98()));
connect(exam->pushButton_99,SIGN(clicked()),this,SLOT(assignment99()));
}

槽函数定义

mainwindow::assignment2()
{
value[2] =1;
}

mainwindow::assignment3()
{
value[3] =1;
}

mainwindow::assignment4()
{
value[4] =1;
}
.........................

mainwindow::assignment97()
{
value[97] =1;
}

mainwindow::assignment98()
{
value[98] =1;
}


mainwindow::assignment99()
{
value[99] =1;
}


不知道有什么样的方法可以实现优化呢?忘各位高手指点啊!
没有对错,只有选择
离线dbzhang800

只看该作者 1楼 发表于: 2010-07-19
QSignalMapper 做这个再合适不过了
快速回复
限100 字节
 
上一个 下一个