關於 qt 信號與槽 數組傳遞


這是我在寫 跳棋時候遇到的,問題當時 我要傳遞的是一個數組,在窗口之間傳遞數組.

關於信號槽 機制請點這里.

注意:信號和槽機制在QObject中就實現了,可以實現在任意從QObject中繼承的子類中。

我要演示的是一個 窗口之間傳遞 數據的信號槽實現,這只是跳棋代碼中的一部分 關鍵代碼

主函數如下:

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

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

private:

   Ui::choose *ui;
   ;

signals:

    void doPlayer(vector );

實現:

void choose::on_pushButton_clicked()

{
    players.resize(6);
    if(ui->lineEdit->text()!=""&&ui->lineEdit_2->text()!=""){
       setPlayer(ui->lineEdit->text(),(int)ui->checkBox->isChecked());
       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{
            
            close();
        }
    }
    else{
        QMessageBox::about(this,"Needed","you must input the First two players");
    }
}
MainWindow類:

private slots:

    
 
 

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是另一個自定義類。 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com