J'ai créé un QTableWidget
dans lequel j'ai utilisé setCellWidget(QWidget*)
. J'ai mis QLineEdit
dans le widget de la cellule. J'ai également créé un bouton de suppression et en cliquant sur ce bouton envoie un signal à la fonction deleteRow
. J'ai également utilisé une fonction currentRow()
pour obtenir la ligne en cours, mais elle renvoie -1
en raison du QLineEdit
. L'extrait de code est ci-dessous.Comment obtenir la ligne actuelle de QTableWidget si j'ai cliqué sur son enfant?
void createTable() {
m_table = new QTableWidget(QDialog); //member variable
for (int i = 0; i < 3; i++)
{
QLineEdit *lineEdit = new QLineEdit(m_table);
m_table->setCellWidget(i, 0, lineEdit);
}
QPushButton *deleteBut = new QPushButton(QDiaolg);
connect(deleteBut, SIGNAL(clicked()), QDialog, SLOT(editRow()));
}
editRow() {
int row = m_table->currentRow(); // This gives -1
m_table->remove(row);
}
Dans le scénario ci-dessus je clique dans le QLineEdit
puis cliquez sur le bouton Supprimer. S'il vous plaît aidez-moi avec une solution.
Pourquoi utilisez-vous 'currentRow()' si vous définissez explicitement la ligne d'édition de ligne à 0? Vous pouvez appeler 'm_table-> remove (0);' directement, non? – vahancho
Que faire si j'ajoute plusieurs lignes. Dans ce cas, je dois connaître le numéro de ligne. – njporwal
J'ai édité le code pour mieux comprendre – njporwal