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