Я создал ввод даты, создав подклассы QLineEdit и QCalendar.Календарь отображается внизу QLineEdit, когда на него получено mousePressEvent.Проблема в том, чтобы скрыть этот календарь.Я переопределил его focusOutEvent, так как хочу, чтобы он закрывался, когда пользователь щелкает где-то еще.Но это событие не получено вообще, я подтвердил это, поставив точку останова, оно никогда не останавливается там.Я поместил в него вызов close()
:
class MyCalendarWidget : public QCalendarWidget
{
Q_OBJECT
public:
void focusOutEvent(QFocusEvent* e)
{
close();
}
};
Когда я закрываю его из своего DateLineEdit, он работает как положено:
void DateLineEdit::mousePressEvent(QMouseEvent *)
{
if (calendar->isVisible())
{
calendar->close();
}
else
{
calendar->move(mapToGlobal(QPoint(0, height())));
calendar->show();
}
}