Wie kann ich alle Mausereignisse in einem Widget von einem Qt-Widget in PyQt abstammen erfassen?

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

  •  19-09-2019
  •  | 
  •  

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?

War es hilfreich?

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
scroll top