2 qq 32215819 qq_32215819 于 2016.03.22 13:57 提问

QT怎么快速实现走动棋子

widget的cpp文件内容
static int m=1,n=1;
    for(int i=0;i<=9;i++){
        for(int j=0;j<=9;j++){
            pbDifineGroup[j+1][i+1] = pbDifine=new   QPushButton(this);
            pbDifine->setGeometry(lbegin+sline*i,60+sline*j,sline,sline);//连续生成按钮
            connect(pbDifineGroup[j+1][i+1],SIGNAL(clicked()),this,SLOT(slotMove(m,n)));
            pbDifine->setFlat(true);//设置按钮透明
            n++;
        }
        m++;
    }
有疑惑的槽函数内容
void Widget::slotMove(int,int)
{
    pbMoveBlue1->setGeometry(pbDifineGroup[m][n]->geometry());//pbMoveBlue1是其中一颗棋子
}
写出来的界面就是图片那样
然后发现在链接信号和槽的时候槽函数好像并不会被调用,只是建立了一个关系,(把槽函数里面的m,n换成了常数发现棋子可以移动),但是用m,n的时候不管点击哪一个格子棋子都没有反应了,本来想用多个信号连接一个槽函数但是实现不同的槽机制的,但是找不到办法,求大神解救。图片

3个回答

qq423399099
qq423399099   Ds   Rxr 2016.03.22 14:30
已采纳

Incompatible sender/receiver arguments
你的连接connect(pbDifineGroup[j+1][i+1],SIGNAL(clicked()),this,SLOT(slotMove(m,n)));
虽然能过编译,但是参数不匹配的话connect会失败
楼主可以qDebug() << connect(pbDifineGroup[j+1][i+1],SIGNAL(clicked()),this,SLOT(slotMove(m,n)));
输出的必然是false

qq_32215819
qq_32215819 突然发现还有个没给分的,不浪费了,麻烦兄弟了,给分给分。
6 个月之前 回复
qq_32215819
qq_32215819 我试了一下,结果全部是true啊⊙ω⊙
一年多之前 回复
qq_32215819
qq_32215819   2016.03.23 10:45

就是这样,返回值全是true图片

qq_32215819
qq_32215819 回复小灸舞: 不好意思,这些天准备二级去了,才上线
一年多之前 回复
qq423399099
qq423399099 图片太糊了。。。
一年多之前 回复
qq_32215819
qq_32215819   2016.03.26 20:56

图片说明返回值图片

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!