Wie kann ich alle Mausereignisse in einem Widget von einem Qt-Widget in PyQt abstammen erfassen?
Frage
Insbesondere ist ich von QCalendarWidget vererben und ich mag die Methode mouse Filter außer Kraft zu setzen, welche Datumsangaben zulässig sind ausgewählt (disjoint Satz, keine einfacher Bereich) werden. Aber wenn ich die Methode überschreiben, verfängt es keine Ereignisse, die in den Kalender Kind-Widgets werden. Wie kann ich das tun?
Lösung
Ich bin überrascht, dass zwingende mouse nicht funktioniert für eine QCalendarWidget. Es funktioniert für die meisten anderen Widgets. Nach einem Blick auf die Dokumentation für QCalendarWidget, bemerke ich ein klickten Signal ist. Wenn Sie verbinden, dass es funktioniert.
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_()
Ich habe noch nie zuvor aus QCalendarWidget geprüft. Ziemlich süßes kleines Widget.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow