複数の列を持つQTreeViewの子孫を作成しました。ユーザーが列ヘッダーを右クリックしたときに表示されるポップアップメニューを作成したいと思います。このためにQTreeViewからの信号をキャッチしようとしましたが、QTreeViewはヘッダーで信号を送信していないようです。QTreeView.header()はそうします。したがって、次のいずれかを行う必要があると思います
。1:QHeaderViewのシグナルの1つをポップアップ関数に接続します-右クリックでトリガーされるシグナルを見つけることができませんでした-sectionClicked、sectionHandleDoubleClicked、sectionDoubleClicked、sectionPressedを試しました(驚くことではありませんダブルクリック関数はシングル右クリックをキャッチしませんでしたが、ダブル右クリックはキャッチします)
self.header().sectionClicked.connect(self.headerMenu)
self.header().sectionHandleDoubleClicked.connect(self.headerMenu)
self.header().sectionDoubleClicked.connect(self.headerMenu)
self.header().sectionPressed.connect(self.headerMenu)
または、
2:独自のMousePressEvent関数を使用してQHeaderViewの子孫を記述し、それをヘッダーに使用します。これまでのところ、新しいヘッダークラスをQTreeViewの子孫に接続することに失敗しています。実行時にセグメンテーション違反が発生し続けますが、これ以上の説明はありません。
#in DiceView's init, where DiceHeaders is the QHeaderView descendant
self.setHeader(DiceHeaders())
何か案は?