setCellWidget(QWidget*)
を使用したQTableWidget
を作成しました。私はQLineEdit
をセルウィジェットに設定しました。また、削除ボタンも作成しました。そのボタンをクリックすると、関数deleteRow
に信号が送信されます。また、関数currentRow()
を使用して現在の行を取得しましたが、QLineEdit
のために-1
を返します。コードスニペットは次のとおりです。私はQLineEdit
をクリックし、[削除]ボタンをクリックして上記のシナリオでQTableWidgetの現在の行を取得する方法は、その子をクリックした場合ですか?
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);
}
。ソリューションで私を助けてください。
を:
QObject::setProperty
を使用することにより:を次に、
editRow
ハンドラでは、その集中子供のためQTableWidgetを尋ねることによってプロパティを取得行の編集の行が0になる'm_table-> remove(0);'を直接呼び出すことはできますか? – vahancho複数の行を追加するとどうなりますか?その場合、私は行番号を知っていなければなりません。 – njporwal
私は理解のためにコードを編集しました – njporwal