كيف يمكنني التقاط جميع أحداث الماوس في عنصر واجهة مستخدم ينحدر من عنصر واجهة مستخدم كيو تي في Pyqt؟
سؤال
على وجه الخصوص، أنا ميراث من QCALENDARWIDGED وأريد تجاوز طريقة الفخمة لتصفية المواعيد المسموح لها بحيث يتم تحديدها (SIX WOTE، وليس نطاقا بسيطا). ولكن عندما أتجاوز الطريقة، فإنه لا يمسك بأي أحداث تذهب إلى الحاجيات الطفل داخل التقويم. كيف يمكنني أن أفعل هذا؟
المحلول
أنا مندهش من أن الفخمة الغالبة لا يعمل من أجل 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 من قبل. القطعة الصغيرة الحلوة.
لا تنتمي إلى StackOverflow