C++ QCalendarWidget-如何禁用日期

C++ QCalendarWidget-如何禁用日期,c++,qt,C++,Qt,我试图使用QCalendarWidget启用或禁用日期(不仅是范围日期),但这看起来是不可能的() 您知道是否可以使用paintEvent方法(或其他方法)执行此操作吗 感谢阅读:)我做了一些研究。日历小部件包含一个常规的QTableView子类(QCalendarView)和一个常规模型(QCalendarModel)。我的尝试是为视图添加代理模型,并更改data()和flags()函数,以返回我想要禁用的日期的禁用状态。但我需要知道单元格上显示的日期。有QCalendarModel::dat

我试图使用QCalendarWidget启用或禁用日期(不仅是范围日期),但这看起来是不可能的()

您知道是否可以使用paintEvent方法(或其他方法)执行此操作吗


感谢阅读:)

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

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


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

非常感谢你的回答,很抱歉我迟了回复。下周我将尝试您的解决方案,并检查您的源代码。