Как я могу захватить все события мыши в виджете, произошедшем от виджета Qt в PyQt? - PullRequest
1 голос
/ 11 ноября 2009

В частности, я наследую от QCalendarWidget и хочу переопределить метод mousePressEvent, чтобы отфильтровать, какие даты можно выбирать (непересекающийся набор, а не простой диапазон). Но когда я переопределяю метод, он не улавливает события, которые идут к дочерним виджетам внутри календаря. Как я могу это сделать?

1 Ответ

1 голос
/ 14 ноября 2009

Я удивлен, что переопределение 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. Довольно милый маленький виджет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...