チェックボックスのみである(およびチェックボックスではない)列がいくつかあるQTableWidgetがあります。ユーザーが「チェックボックスのみ」列に関連するヘッダー項目を右クリックすると、「すべてチェックを外す」または「すべてチェックする」オプションが表示されるように、機能を実装しようとしています。
これまでのところ、customContextMenu
次のシグナルを介してを実装することができました。
self.headers = self.tblData.horizontalHeader()
self.headers.setContextMenuPolicy(Qt.CustomContextMenu)
self.headers.customContextMenuRequested.connect(self.show_header_context_menu)
self.headers.setSelectionMode(QAbstractItemView.SingleSelection)
これにより、次のコンテキストメニュー呼び出しが発生します。
def show_header_context_menu(self, position):
menu = QMenu()
deselect = menu.addAction("Clear Checked")
ac = menu.exec_(self.tblData.mapToGlobal(position))
if ac == deselect:
pass
#Actually do stuff here, of course
これによりコンテキストメニューがポップアップしますが、右クリックしたヘッダーのインデックスを取得する方法が見つかりません。self.headers.selectedIndexes()
同様に試しましself.headers.currentIndex()
たが、これらは実際のテーブルの選択にのみ関連しているようで、ヘッダーには関連していないようです。
右クリックされたヘッダーインデックスを取得できたら、適切なインデックスが選択されている場合にのみ表示されるようにメニューを簡単に制限できます(チェックボックスのみの列)。これは実際には追加のことです。
私は何が欠けていますか?助けてくれてありがとう。