我已经创建了一个日期输入的子类化QLineEdit和QCalendar。当接收到mousePressEvent时,日历显示在QLineEdit的底部。问题在于隐藏该日历。我已经重写了focusOutEvent,因为当用户点击其他地方时,我想让它关闭。但是这个事件根本没有收到,我通过在其中放置一个断点来证实这一点,它从来没有停止过。我已经把调用close()
它:QWidget focusOutEvent没有收到
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();
}
}
就是这样,谢谢。 – 2011-04-07 16:49:19