どのように私はPyQtはQtの中にウィジェットから降りウィジェット内のすべてのマウスイベントをキャプチャすることができますか?

StackOverflow https://stackoverflow.com/questions/1716916

  •  19-09-2019
  •  | 
  •  

質問

特に、私はQCalendarWidgetから継承していると私は日付が(ばらばらのセットではなく、シンプルな範囲)を選択することが許可されているものをフィルタリングするmousePressEventメソッドをオーバーライドします。私はメソッドをオーバーライドする場合しかし、それはカレンダー内の子ウィジェットに行くされているすべてのイベントをキャッチしません。私はこれを行うことができますどのように?

役に立ちましたか?

解決

私はmousePressEventをオーバーライドすることはQCalendarWidgetのために動作しないことに驚いています。これは、ほとんどの他のウィジェットのために動作します。 QCalendarWidgetのためのドキュメントを見た後、私は、クリックされた信号があると気づきます。あなたはそれが動作することを接続する場合。

import sys

from PyQt4 import QtGui, QtCore

class MyCalendar(QtGui.QCalendarWidget):
    def __init__(self):
        QtGui.QCalendarWidget.__init__(self)
        self.connect(self, QtCore.SIGNAL("clicked(QDate)"), self.on_click)
        self.prev_date = self.selectedDate()

    def on_click(self, date):
        if self.should_ignore(date):
            self.setSelectedDate(self.prev_date)
            return
        self.prev_date = date

    def should_ignore(self, date):
        """ Do whatever here """
        return date.day() > 15

app = QtGui.QApplication(sys.argv)
cal = MyCalendar()
cal.show()
app.exec_()

私は前にQCalendarWidgetをチェックアウトしたことがなかったです。かなり甘い少しウィジェットます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top