C++ QT将带参数的函数传递到插槽

C++ QT将带参数的函数传递到插槽,c++,qt,signals-slots,C++,Qt,Signals Slots,所以我想在按下我创建的按钮时调用函数,如下所示: QPushButton*pb=新的QPushButton 我想调用的函数是:Engine::gauss(QLineEdit*&line,QLineEdit*&results,int-sizeMatters)。所以问题是,所有这些参数都在另一个插槽中,确切地说,在on_button_clicked函数中: void MainWindow::on_pushButton_clicked() { Result x; int size

所以我想在按下我创建的按钮时调用函数,如下所示:
QPushButton*pb=新的QPushButton
我想调用的函数是:
Engine::gauss(QLineEdit*&line,QLineEdit*&results,int-sizeMatters)
。所以问题是,所有这些参数都在另一个插槽中,确切地说,在on_button_clicked函数中:

   void MainWindow::on_pushButton_clicked()
{
    Result x;
    int sizeMatters;
    sizeMatters=ui->le_size->text().toInt();

    int c = ui->grid->count();
    if(c!=0){
        for(int m = 0; m < c; m++){
            ui->grid->itemAt(m)->widget()->close();
        }

    }

    c = ui->grid_results->count();
    if(c!=0){
        for(int f = 0; f < c; f++){
            ui->grid_results->itemAt(f)->widget()->close();
        }
    }
    ui->le_size->setMaxLength(2);

    QLineEdit *line = new QLineEdit[sizeMatters*sizeMatters];
    QLabel *label = new QLabel[sizeMatters];
    QLineEdit *results = new QLineEdit[sizeMatters];
    QLineEdit *finals = new QLineEdit[sizeMatters];

    int w = 0;
    for(int j = 0; j<sizeMatters; j++){
        for(int i = 0; i<sizeMatters; i++){
            ui->grid->addWidget(&line[w],j+1,i+1);
            w++;

        }
        label[j].setText("=");
        ui->grid->addWidget(&label[j],j+1,sizeMatters+1);
        ui->grid->addWidget(&results[j],j+1,sizeMatters+2);

    }


    for(int j = 0; j<sizeMatters; j++){
        ui->grid_results->addWidget(&finals[j],1,j+1);
    }
    QPushButton *pb = new QPushButton;
    if(c==0){

    ui->verticalLayout->addWidget(pb);
  }



    for(int p=0;p<sizeMatters;p++){
        QString liczba = QString::number(x.wyniki[p]);

        finals[p].setText(liczba);
    }



}
void主窗口::在按钮上点击()
{
结果x;
int sizeMatters;
sizeMatters=ui->le_size->text().toInt();
int c=ui->grid->count();
如果(c!=0){
对于(int m=0;mgrid->itemAt(m)->widget()->close();
}
}
c=ui->grid_results->count();
如果(c!=0){
对于(int f=0;fgrid_results->itemAt(f)->widget()->close();
}
}
ui->le_size->setMaxLength(2);
QLineEdit*line=新的QLineEdit[sizeMatters*sizeMatters];
QLabel*label=新的QLabel[sizeMatters];
QLineEdit*结果=新的QLineEdit[sizeMatters];
QLineEdit*finals=新的QLineEdit[sizeMatters];
int w=0;
for(intj=0;jaddWidget(&line[w],j+1,i+1);
w++;
}
标签[j].setText(“=”);
ui->grid->addWidget(&label[j],j+1,sizeMatters+1);
ui->grid->addWidget(&results[j],j+1,sizeMatters+2);
}
对于(int j=0;jgrid_results->addWidget(&finish[j],1,j+1);
}
QPushButton*pb=新的QPushButton;
如果(c==0){
ui->verticalLayout->addWidget(pb);
}

对于(int p=0;pIs
Engine::gauss
静态方法,或者您是否需要可用的引擎实例来调用它?其静态“静态结果gauss(QLineEdit*&line,QLineEdit*&results,int sizeMatters);”只需在普通的按钮单击槽中调用它。我不能,因为我在其中没有QLineEdit*&line、QLineEdit*&results、int-sizeMatters值function@MikołajPopieluch,请看一下。我使用lambdas作为适配器来解决类似问题。还有一个链接指向另一个(更全面)答案。