QDateEdit日历弹出窗口

Rob*_*b S 2 qt qcalendarwidget

我正试图让a QDateEdit在允许QCalendarWidget时显示(而不是仅仅点击向下箭头).例如,在我班上的某个地方,我应该可以说:

ui.datepicker.showCalendar()
Run Code Online (Sandbox Code Playgroud)

它应该加载日期选择器正下方的日历.

看起来我需要子类QDateEdit,因为这不起作用:

QDateEdit *de = new QDateEdit();
de->calendarWidget()->show();
Run Code Online (Sandbox Code Playgroud)

当你通过Qt的QDateTimeEdit.cpp源代码时,我也试过发送键盘命令,但似乎我的键盘快捷键被禁用了.

关于我要对子类做什么以使其工作的任何想法?我想的是:

class MyDateEdit : QDateEdit
{
  Q_OBJECT

protected:
  void mouseEvent(QEvent *event) {
    this.calendarWidget().show();
  }
};
Run Code Online (Sandbox Code Playgroud)

但唉,似乎也没有编译或正常工作.

小智 10

在QDateTimeEdit中启用"setCalendarPopup(bool enable)"允许弹出日历


Rob*_*b S 2

我能够自己弄清楚 - 仍然不确定如何让 QDateEdit 正常工作,但我使用了 QLineEdit 并且它适合我的需求。只需将 QCalendarWidget 的“onClick(QDate)”连接到您创建的插槽即可执行以下操作:

setText(date.toString("M/d/yyyy"));
ui->calendar->hide();
Run Code Online (Sandbox Code Playgroud)

然后使用执行“ui->calendar->show();”的“OnFocusIn”事件将事件过滤器添加到 QLineEdit。请参阅:当 Qt 小部件获得焦点时获取通知/事件/信号