开发者社区> 问答> 正文

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的时候不管点击哪一个格子棋子都没有反应了,本来想用多个信号连接一个槽函数但是实现不同

展开
收起
a123456678 2016-03-09 13:19:22 1991 0
1 条回答
写回答
取消 提交回答
  • Incompatible sender/receiver arguments
    你的连接connect(pbDifineGroupj+1,SIGNAL(clicked()),this,SLOT(slotMove(m,n)));
    虽然能过编译,但是参数不匹配的话connect会失败
    楼主可以qDebug() << connect(pbDifineGroupj+1,SIGNAL(clicked()),this,SLOT(slotMove(m,n)));
    输出的必然是false

    2019-07-17 18:55:52
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关镜像