槽函数的问题
class Button : public QGraphicsWidget
{
Q_OBJECT
public:
int alpha[32][32];
int beta[32][32];
int delta[32][1];
int e;
……
private slots:
int button_action()
{
Button::e=return_seqnumber();
int c=0;
if (e<32)
{
/* for (int i = 0; i < 32; ++i)
{
for (int j=0; j<32; ++j)
{
if (i==j)
Button::a[i][j]=1;
else if (i!=j)
Button::a[i][j]=0;
}
}*/
for (int i=0; i<32; ++i)
{
d[i][1]=a[i][e];
}
return d[32][1];
}
else if (e>=32)
{
/* for (int i = 0; i < 32; ++i)
{
for (int j=0; j<32; ++j)
{
if (i==j)
Button::b[i][j]=1;
else if (i!=j)
Button::b[i][j]=0;
}
}*/
for (int i=0; i<32; ++i)
{
c=c+Button::d[i][1]*Button::b[e-32][i];
}
}
if (c==1)
close();
else
isActive();
} //红色注释中间的是我循环给alpha和beta赋值,不用看
想实现这样的功能:做了64个按钮,点击前32个中的一个,产生一个alpha矩阵,并且将delta(button类的成员变量)用
alpha的第e行赋值;
然后点击后32个中的一个,产生一个beta矩阵, 然后将beta矩阵中的第e列和delta相
乘,得出一个判断变量(判断变量不管了)
问题是:我做了1个connect函数,64个按钮用一个槽实现,用e<32或者是e〉=32判断分别实现,但是每次点击了前32个中的一
个,当时delta的被正确赋值了,再点击后32中的一个delta的值就变了。我做了2个槽分别实现也不行。
为什么槽函数不能返回一个变量的值(delta,他是整体类Button的成员),供另一个槽函数来使用呢???
点击1号button时delta产生的值如下:
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
点击后32个随便一个调用delta,delta的值如下:
864320
3539000
3539039
2097204
6881388
7667822
2097272
2818151
2949163
2097204
7667814
7077996
6488109
7209071
6881382
103
0
0
0
0
0
0
0
0
0
0
240
0
64
0
308263040
32
[解决办法]
用一个类的全局变量不就好了?