我怎样才能捕捉从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