C++ 如何在qt中的QTableWidget中的comboBox项后获取行号
在comboBox中选择一些主题后,我想获得一个QTableWidget行的数量,如何获得该行,谢谢C++ 如何在qt中的QTableWidget中的comboBox项后获取行号,c++,qt,qt5,qtablewidget,qcombobox,C++,Qt,Qt5,Qtablewidget,Qcombobox,在comboBox中选择一些主题后,我想获得一个QTableWidget行的数量,如何获得该行,谢谢 在这种情况下,您不应该使用QComboBox的父项,您必须使用相同的sender() 也就是说,你欠这个小部件的债,所以我们在前面的例子中利用了sender()和parent()。在当前情况下,直接添加QComboBox。在这种情况下,您不应该使用QComboBox的父项,您必须使用相同的发送方() 也就是说,你欠这个小部件的债,所以我们在前面的例子中利用了sender()和parent()。在
在这种情况下,您不应该使用
QComboBox
的父项,您必须使用相同的sender()
也就是说,你欠这个小部件的债,所以我们在前面的例子中利用了
sender()
和parent()
。在当前情况下,直接添加QComboBox
。在这种情况下,您不应该使用QComboBox
的父项,您必须使用相同的发送方()
也就是说,你欠这个小部件的债,所以我们在前面的例子中利用了sender()
和parent()
。在当前情况下,直接添加了QComboBox
。eyllanesc,谢谢你的想法,但它对我不起作用它在qlineEdit中写入-1也许你知道如何使用currentRow()实现它?你确定吗?我刚刚尝试过,但没有得到正确的行currentRow()
不起作用,因为它返回已选择的行,如果您使用setCellWidget()
则选择不会传输到表中。检查我的答案,您必须更改:QWidget*w=qobject\u cast(sender()->parent())
toQWidget*w=qobject_cast(sender())代码>您没有进行此更改,请更正它,如果它起作用,请不要忘记将我的答案标记为正确。eyllanesc,谢谢您的想法,但它对我不起作用它在qlineEdit中写入-1也许您知道如何使用currentRow()进行更改?您确定吗?我刚刚尝试过,但没有得到正确的行currentRow()
不起作用,因为它返回已选择的行,如果您使用setCellWidget()
则选择不会传输到表中。检查我的答案,您必须更改:QWidget*w=qobject\u cast(sender()->parent())
toQWidget*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()