如何在qt中的QTableWidget中获取comboBox项后的行号

how to get row number after comboBox item in QTableWidget in qt

我想在组合框中选择一些主题后获取 QTableWidget 行的编号如何获取行,谢谢。

void MainWindow::metto_stringa(int i)
{
    QWidget *w = qobject_cast<QWidget *>(sender()->parent());
    if(w)
    {
        int row = ui->tableWidget->indexAt(w->pos()).row();
        ui->lineEdit->setText(QString::number( row ));
    }
    // ui->lineEdit->setText(QString::number( i ));
}

else if(i == 3)
{
     // ui->tableWidget->setCellWidget(ui->tableWidget->rowCount(), i, "");
      QString s = "Normal";
      QComboBox *combo = new QComboBox;
      combo->addItem("Below normal");
      combo->addItem("Normal");
      combo->addItem("Above normal");
      combo->addItem("High");
      combo->addItem("Real time");
      connect(combo,SIGNAL(currentIndexChanged(int)),this,
      SLOT(metto_stringa(int)));
      ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1,  i,combo);
      /*  ui->tableWidget->setCellWidget(i,4,combo);
      QTableWidgetItem*item = new QTableWidgetItem(s);
      item->setFlags(item->flags() ^ Qt::ItemIsEditable);
      ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, i, 
      item);*/
      continue;
}

在这种情况下你不应该使用 QComboBox 的父级,你必须使用相同的 sender()

void MainWindow::metto_stringa(int index)
{
    QWidget *w = qobject_cast<QWidget *>(sender());
    if(w)
    {
        int row = ui->tableWidget->indexAt(w->pos()).row();
        ui->lineEdit->setText(QString::number(row));
    }
}

中,我在评论之前回答说您必须访问您在 setCellWidget() 函数中使用的小部件,在之前的情况下,小部件具有以下形式:

QWidget <--- QPushButton
parent()     sender()

即你欠那个小部件,所以我们在前面的案例中利用了 sender()parent()。在当前情况下 QComboBox 直接添加。