我想使用QCalendarWidget啓用或禁用日期(而不僅僅是範圍日期),但它看起來不可能(https://bugreports.qt.io/browse/QTBUG-198)。QCalendarWidget - 如何禁用日期
你知道是否有可能用paintEvent方法(或其他)做到這一點?
感謝您的閱讀:)
我想使用QCalendarWidget啓用或禁用日期(而不僅僅是範圍日期),但它看起來不可能(https://bugreports.qt.io/browse/QTBUG-198)。QCalendarWidget - 如何禁用日期
你知道是否有可能用paintEvent方法(或其他)做到這一點?
感謝您的閱讀:)
我已經做了一些研究。日曆小部件包含常規模型(QCalendarModel
)的常規QTableView
子類(QCalendarView
)。我的嘗試是爲視圖添加代理模型,並將data()
和flags()
函數更改爲禁用狀態以返回我想要禁用的日期。但我需要知道哪個日期顯示在一個單元格上。對此,有QCalendarModel::dateForCell
方法,但是從代碼無法訪問。這很複雜,取決於QCalendarModel
的實施。
所以我認爲這是不可能的。我看到的唯一方法是將QCalendarWidget
源文件複製到您的項目中,並重命名類以避免與現有Qt類衝突。然後你可以改變實現。在任何使用最小和最大日期的地方(例如,在QCalendarModel::flags
函數中),您應該使用啓用/禁用的班級列表來替換它。
如果您在我的嘗試中發現有用的東西,我已發佈代碼here。代理模型被接收並且所有單元格的背景都變成綠色。
很多謝謝你的回答,抱歉我遲到的回覆。我會在下週嘗試您的解決方案並檢查您的源代碼。 –