QTextEditをサブクラス化して、Shiftキーを押しながら選択範囲を移動してテキスト選択を変更できるようにしたいとします。現在のところ、shift-clickはアンカーの移動を許可していません。最初のステップは、デフォルトのシフト・クリック機能を無効にすることだと思います。 mousePressEventとmouseMoveEventを使用してこれを実行しようとしましたが、Shiftキーを押しながらクリックしてマウスを移動すると、どちらのイベントもトリガーされません。選択を変更するために現在使用されているシフトクリックドラッグを検出するにはどうすればよいですか?私のコードは以下の通りです。QTextEditでShiftキーを押しながらドラッグを検出するには
mouseMoveEvent内でボタンが「なし」に等しいことを漠然と覚えています。私は今、その参照を見つけることができません。これが真実ならば、私はさらに困惑します。
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class TextEditor(QTextEdit):
def __init__(self, parent=None, text=None):
super().__init__(parent)
self.setReadOnly(True)
self.setText(text)
self.setMouseTracking(True) # Not sure if I will need this
def mousePressEvent(self, event):
if event.buttons==Qt.LeftButton:
modifiers = QApplication.keyboardModifiers()
if modifiers == Qt.ShiftModifier:
print("Shift+Left Click") # This never triggers
super().mousePressEvent(event)
def mouseMoveEvent(self, event):
if event.buttons==Qt.LeftButton:
modifiers = QApplication.keyboardModifiers()
if modifiers == Qt.ShiftModifier:
print("Move and Shift + Left Button") # This never triggers
super().mouseMoveEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = TextEditor(text="Faction leaders unanimously decided to form a parliamentary inquiry committee...")
window.show()
sys.exit(app.exec_())
ありがとうございました。ルーキーミス。 – davideps