[私は PyQt4 を使用していますが、この Qt4 の問題は Python 固有のものではないと思います。]
私は持っていQTableWidget
ます。各行の最初の列にはボタンがあります。クリックすると、行が削除されます。
行を削除するには、removeRow(int row)
行のインデックスを引数として受け取るメソッドを使用します。信号を接続するとき、その間に変更される可能性があるため、行のインデックスを知ることができません (たとえば、最初の行が削除されると、すべての行のインデックスが変更されます)。
ここで受け入れられた回答は、コールバックに行内の QTableWidgetItem のインスタンスを渡し、削除時にこのアイテムから行番号を取得することを提案しています。
行の要素がQTableWidgetItem
. 要素は、ボタン自体といくつかの ComboBoxes です。
これを回避する方法がわかりません。
私の要素の 1 つを QTableWidgetItem に収めることはできますか? ある種の隠し列に QTableWidgetItem を追加する必要がありますか?
現在の実装ではindexAt(QtGui.qApp.focusWidget())
(上記の質問に対する他の回答を参照) を使用していますが、これは残念な回避策のように見えます。
ボタンをこのようなチェック可能な QTableWidgetItem に置き換えると
rm_item = QtGui.QTableWidgetItem()
rm_item.setFlags(QtCore.Qt.ItemIsUserCheckable |
QtCore.Qt.ItemIsEnabled)
行インデックスに戻るために使用できる QTableWidgetItem があります。しかし、ボタンのように「チェック」または「クリック」イベントをキャッチする方法がわかりません。私が見つけたのは のitemClicked
信号QTableWidget
だけですが、他のすべてのウィジェットを除外する必要があります。
私が見逃している明らかな何かがなければなりません。
編集
ここで読んだことから、setItem を使用した QTableWidgetItem と setCellWidget を使用した Button ウィジェットの両方を同じセルに追加できました。これは私にはあまり自然なことではないように思えますが、どうやら機能しているようです (今はテストできません)。
私はそうするだろうと思います。ボタンを追加し、同じセルにダミーの QTableWidgetItem を追加して、行への参照として渡します。
これが意図された方法ですか?
編集 2
またはQTableWidget
、適切なウィジェットではない可能性があります。ここでLayout
提案されているように、を使用する必要があります。