C++ Qt couting动态制作的选中按钮

C++ Qt couting动态制作的选中按钮,c++,arrays,qt,dynamic,qpushbutton,C++,Arrays,Qt,Dynamic,Qpushbutton,我想数一数有多少按钮被检查过 void pracownik2::on_pushButton_4_clicked() { this->setWindowTitle("EKRAN"); QWidget *centralWidget = new QWidget; int licznik=1; QString licz; QString kolumny = ui->lineEdit->te

我想数一数有多少按钮被检查过

    void pracownik2::on_pushButton_4_clicked()
{

    this->setWindowTitle("EKRAN");
    QWidget *centralWidget = new QWidget;
            int licznik=1;
            QString licz;
            QString kolumny = ui->lineEdit->text();
            QString wiersze = ui->lineEdit_2->text();
            QPushButton *button[wiersze.toInt()][kolumny.toInt()];

            QGridLayout *controlsLayout = new QGridLayout;
            for(int i=0;i<wiersze.toInt();i++)
            {
                for(int j=0;j<kolumny.toInt();j++)
                {
                        licz = QString::number(licznik);
                        licznik++;
                        button[i][j] = new QPushButton(licz);
                        button[i][j]->setCheckable(1);
                        controlsLayout->addWidget(button[i][j], i, j);
                }
            }

            QPushButton *okej = new QPushButton("Zatwierdź");
            QPushButton *anul = new QPushButton("Anuluj");

            controlsLayout->addWidget(okej, wiersze.toInt(), 0);
            controlsLayout->addWidget(anul, wiersze.toInt(), 1);

            controlsLayout->setHorizontalSpacing(0);
            controlsLayout->setVerticalSpacing(0);
            centralWidget->setLayout(controlsLayout);

            setCentralWidget(centralWidget);



            for(int i=0;i<wiersze.toInt();i++)
            {
                for(int j=0;j<kolumny.toInt();j++)
                {
                        connect(button[i][j],SIGNAL(toggled(bool)),this,SLOT(tescik()));
                }
            }
            connect(anul,SIGNAL(clicked()),this,SLOT(close()));

            connect(okej,SIGNAL(clicked()),this,SLOT(okay2()));


}





    void pracownik2::tescik()
{

miejsca++;

}

    void pracownik2::okay2()
{

    QString m=QString::number(miejsca);
    QMessageBox::information(this,"elo","wybranych miejsc: " + m);
}
void pracownik2::点击按钮
{
此->设置窗口标题(“EKRAN”);
QWidget*centralWidget=新的QWidget;
int-licznik=1;
QString-licz;
QString kolumny=ui->lineEdit->text();
QString wiersze=ui->lineEdit_2->text();
QPushButton*按钮[wiersze.toInt()][kolumny.toInt()];
QGridLayout*controlsLayout=新的QGridLayout;
对于(inti=0;iaddWidget(按钮[i][j],i,j));
}
}
QPushButton*okej=新的QPushButton(“Zatwierdź”);
QPushButton*anul=新的QPushButton(“Anuluj”);
controlsLayout->addWidget(okej,wiersze.toInt(),0);
controlsLayout->addWidget(anul,wiersze.toInt(),1);
controlsLayout->setHorizontalSpacing(0);
controlsLayout->setVerticalSpacing(0);
centralWidget->setLayout(controlsLayout);
setCentralWidget(centralWidget);

对于(int i=0;i切换的信号
有一个布尔参数,将其添加到插槽中,并根据它调整计数。更改连接:

connect(button[i][j],SIGNAL(toggled(bool)),this,SLOT(tescik(bool)));
和更换插槽:

void pracownik2::tescik(bool t) {
    if (t) miejsca++;
    else miejsca--;
}

也许,但我不知道该将此“if”语句放在何处。您的代码中现在有“增加计数”。将其替换为“如果选中了按钮,则增加计数,否则减少计数”。或者您需要执行的任何操作。但有一个函数用于增加,我就是无法将if(button->isChecked()==true)放在其中因为按钮是动态生成的
QPushButton
QAbstractButton
继承了这个信号:我尝试了不同的信号,我的意思是clicked()、pressed()、released(),但它不起作用