我正在尝试使用启用或禁用日期(不仅是范围日期)的QCalendarWidget,但它看起来不可能(https://bugreports.qt.io/browse/QTBUG-198)。
您是否知道是否可以使用paintEvent方法(或其他方法)来做到这一点?
感谢您的阅读:)
发布于 2013-07-24 18:15:52
我做了一些研究。日历小部件包含一个具有常规模型(QCalendarModel)的常规QTableView子类(QCalendarView)。我的尝试是为视图添加一个代理模型,并更改data()和flags()函数以返回要禁用的日期的禁用状态。但是我需要知道哪个日期显示在单元格上。有一个QCalendarModel::dateForCell方法可以做到这一点,但它不能从代码中访问。它相当复杂,并且依赖于QCalendarModel的实现。
所以我认为这几乎是不可能的。我看到的唯一方法是将QCalendarWidget源代码复制到您的项目中,并重命名类,以避免现有Qt类的冲突。然后,您可以更改实现。在任何使用了最小和最大日期的地方(例如,在QCalendarModel::flags函数中),您应该使用您的启用/禁用类列表来替换它。
如果您在我的尝试中发现了一些有用的东西,我已经发布了代码here。代理模型被接受,并且所有单元格的背景都是绿色的。
https://stackoverflow.com/questions/17806659
复制相似问题