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

C++ 如何在qt中的QTableWidget中的comboBox项后获取行号,c++,qt,qt5,qtablewidget,qcombobox,C++,Qt,Qt5,Qtablewidget,Qcombobox,在comboBox中选择一些主题后,我想获得一个QTableWidget行的数量,如何获得该行,谢谢 在这种情况下,您不应该使用QComboBox的父项,您必须使用相同的sender() 也就是说,你欠这个小部件的债,所以我们在前面的例子中利用了sender()和parent()。在当前情况下,直接添加QComboBox。在这种情况下,您不应该使用QComboBox的父项,您必须使用相同的发送方() 也就是说,你欠这个小部件的债,所以我们在前面的例子中利用了sender()和parent()。在

在comboBox中选择一些主题后,我想获得一个QTableWidget行的数量,如何获得该行,谢谢


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


也就是说,你欠这个小部件的债,所以我们在前面的例子中利用了
sender()
parent()
。在当前情况下,直接添加
QComboBox

在这种情况下,您不应该使用
QComboBox
的父项,您必须使用相同的
发送方()


也就是说,你欠这个小部件的债,所以我们在前面的例子中利用了
sender()
parent()
。在当前情况下,直接添加了
QComboBox

eyllanesc,谢谢你的想法,但它对我不起作用它在qlineEdit中写入-1也许你知道如何使用currentRow()实现它?你确定吗?我刚刚尝试过,但没有得到正确的行
currentRow()
不起作用,因为它返回已选择的行,如果您使用
setCellWidget()
则选择不会传输到表中。检查我的答案,您必须更改:
QWidget*w=qobject\u cast(sender()->parent())
to
QWidget*w=qobject_cast(sender())您没有进行此更改,请更正它,如果它起作用,请不要忘记将我的答案标记为正确。eyllanesc,谢谢您的想法,但它对我不起作用它在qlineEdit中写入-1也许您知道如何使用currentRow()进行更改?您确定吗?我刚刚尝试过,但没有得到正确的行
currentRow()
不起作用,因为它返回已选择的行,如果您使用
setCellWidget()
则选择不会传输到表中。检查我的答案,您必须更改:
QWidget*w=qobject\u cast(sender()->parent())
to
QWidget*w=qobject_cast(sender())您尚未进行此更改,请更正它,如果它有效,请不要忘记将我的答案标记为正确。
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;
}
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));
    }
}
QWidget <--- QPushButton
parent()     sender()