4

我正在尝试使用启用或禁用日期(不仅是范围日期)的 QCalendarWidget,但它看起来不可能(https://bugreports.qt.io/browse/QTBUG-198)。

您知道是否可以使用paintEvent 方法(或其他方法)来做到这一点?

谢谢阅读 :)

4

1 回答 1

3

我做了一些研究。日历小部件包含一个带有常规模型 ( ) 的常规QTableView子类 ( )。我的尝试是为视图和更改添加代理模型,并为我想要禁用的日期返回禁用状态。但我需要知道哪个日期显示在单元格上。有一种方法,但它无法从代码中访问。它相当复杂,取决于.QCalendarViewQCalendarModeldata()flags()QCalendarModel::dateForCellQCalendarModel

所以我认为这几乎是不可能的。我看到的唯一方法是将QCalendarWidget源代码复制到您的项目并重命名类以避免与现有 Qt 类发生冲突。然后你可以改变实现。在使用最小和最大日期的任何地方(例如在QCalendarModel::flags函数中),您应该使用启用/禁用类列表替换它。

如果您在我的尝试中发现有用的东西,我已经在这里发布了代码。代理模型被接受,所有单元格的背景都变为绿色。

于 2013-07-24T10:15:52.327 回答