关于 qt 信号与槽 数组传递

这是我在写 跳棋时候遇到的,问题当时 我要传递的是一个数组,在窗口之间传递数组.

关于信号槽 机制请点这里.

注意:信号和槽机制在QObject中就实现了,可以实现在任意从QObject中继承的子类中。

我要演示的是一个 窗口之间传递 数据的信号槽实现,这只是跳棋代码中的一部分 关键代码

主函数如下:

int main(int argc, char *argv[])

{
    Q_INIT_RESOURCE(pic);
    QApplication a(argc, argv);
    MainWindow *w=new MainWindow();
    choose *c=new choose();
    w->show();
    QObject::connect(w,SIGNAL(choose_open()),c,SLOT(show()));
    QObject::connect(c,SIGNAL(doPlayer(vector
  
  
   
   )),w,SLOT(setChessBoard(vector
   
   
    
    )));
   
   
  
  
    QObject::connect(w->getBoard(),SIGNAL(gameOver(int)),w,SLOT(gameOver(int)));
    return a.exec();
}
choose类:
声明:

private:

   Ui::choose *ui;
   vector
  
  
   
    players
  
  ;

signals:

    void doPlayer(vector
 
 
  
   );
 
 

实现:

void choose::on_pushButton_clicked()

{
    players.resize(6);
    if(ui->lineEdit->text()!=""&&ui->lineEdit_2->text()!=""){
        players[0].setPlayer(ui->lineEdit->text(),(int)ui->checkBox->isChecked());
        players[1].setPlayer(ui->lineEdit_2->text(),(int)ui->checkBox_2->isChecked());
        if(!((int)ui->checkBox->isChecked())&&!((int)ui->checkBox_2->isChecked())){
            QMessageBox::about(this,"Needed","you must choose at least one man");
        }
        else{
            emit doPlayer(players);// 只是在此处发布这个消息 players 在上面接收了数据
            close();
        }
    }
    else{
        QMessageBox::about(this,"Needed","you must input the First two players");
    }
}
MainWindow类:

private slots:

    void setChessBoard(vector
  
  
   
    );
  
  
实现:

void MainWindow::setChessBoard(vector players){

    this->board->setChess(players);
    this->board->newGame();
    ui->gameBegin->setDisabled(1);
 
    ui->currentLongest->setDisabled(0);//使得三个提示策略 可以使用
    ui->nextLess->setDisabled(0);
    ui->nextLongest->setDisabled(0);
 
    ui->getAnimation->setDisabled(1);//读取动画文件 不可使用
}
 
这样就实现了 vector 
 
   players 的传递 其中 player是另一个自定义类。 
 
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值