Here is function which is painting cells of some dates that were previously calculated and saved in the "dates" list, function is working fine but I want to call that function when QDateEdit is clicked(when popup calendar is shown)
def init_gui(self):
# Set signals of widgets
self.dockwidget.date_to.calendarWidget().clicked.connect(self.paint_cell) # !! the signal I'm looking for
def paint_cell(self):
#QDateEdit / QCalendarWidget Highlight Dates
keyword_format = QTextCharFormat()
keyword_format.setBackground(Qt.gray)
for date in dates:
self.dockwidget.date_from.calendarWidget().setDateTextFormat(QDate.fromString(date,"yyyy-MM-dd") ,keyword_format)
self.dockwidget.date_from() # QDateEdit
self.dockwidget.date_from.calendarWidget() # QCalendarWidget
I know that there are signals, but they are all working when QDate is clicked: self.dockwidget.date_to.calendarWidget().activated.connect(self.paint_cell) self.dockwidget.date_to.calendarWidget().clicked.connect(self.paint_cell) self.dockwidget.date_to.calendarWidget().selectionChanged.connect(self.paint_cell)
but I have to paint the cells before these signals ,when the popup is displayed.
Does anyone know what that signal is?
NOTE: Code will be part of QGis plugin
with hints from @eyllanesc post, my working code now is:
class Project(QDockWidget):
""" QGIS Plugin Implementation. """
popupSignal = QtCore.pyqtSignal()
def __init__(self, iface):
""" Constructor.
:param iface: An interface instance that will be passed to this class
which provides the hook by which you can manipulate the QGIS
application at run time.
:type iface: QgisInterface
"""
QDockWidget.__init__(self)
# Save reference to the QGIS interface
self.iface = iface
# initialize plugin directory
self.plugin_dir = os.path.dirname(__file__)
...
def eventFilter(self, obj, event):
if self.dockwidget.date_to.calendarWidget() is obj and event.type() == QtCore.QEvent.Show:
self.popupSignal.emit()
return super(Project, self).eventFilter(obj, event)
....
def run(self):
""" Run method that loads and starts the plugin """
self.dockwidget.date_to.calendarWidget().installEventFilter(self)
self.popupSignal.connect(self.paint_cell)
def paint_cell(self):
#QDateEdit / QCalendarWidget Highlight Dates
keyword_format = QTextCharFormat()
keyword_format.setBackground(Qt.gray)
for date in dates:
self.dockwidget.date_from.calendarWidget().setDateTextFormat(QDate.fromString(date, "yyyy-MM-dd"), keyword_format)