2016-10-28 7 views
0

QTableWidgetに2列あり、最初の列にはテキストが、2列目にはコンボボックスが挿入されます。QTableWigetの特定の列の空のセルを確認して行を削除します。

私のテーブルには、作成したチェックの1つを実行できなかったため、コンボボックスが挿入されていない行がいくつかあります。そのため、2番目の列にコンボボックスは作成されず、空のセル。

2番目の列の空のセルを確認して、行全体を削除するにはどうすればよいですか?

ソリューションをオンラインで検索している間、私は次のことを試してみました:

for row in xrange(self.my_table.rowCount()): 
    column_cell = self.my_table.item(row, 1) 
    column_text = str(column_cell.text()) 
    if column_text.isEmpty(): 
     self.my_table.removeRow(row_position) 

そして、私は次のエラーました:私は私のセルが行の編集などなどテキストなしではありませんので、これがあるとし # AttributeError: 'NoneType' object has no attribute 'text' # を?

この問題を回避するにはどうすればよいですか?

答えて

1

セルにウィジェットが含まれているかどうかを確認するのは、ウィジェットにテキストが含まれているかどうかを確認する方が意味があります。また、を逆に反復して、行を削除しても残りの行のインデックスに影響を与えないようにする必要があります。

for row in reversed(xrange(self.my_table.rowCount())): 
    widget = self.my_table.cellWidget(row, 1) 
    if widget is None: 
     self.my_table.removeRow(row) 
関連する問題