2013-07-23 44 views

回答

3

我已經做了一些研究。日曆小部件包含常規模型(QCalendarModel)的常規QTableView子類(QCalendarView)。我的嘗試是爲視圖添加代理模型,並將data()flags()函數更改爲禁用狀態以返回我想要禁用的日期。但我需要知道哪個日期顯示在一個單元格上。對此,有QCalendarModel::dateForCell方法,但是從代碼無法訪問。這很複雜,取決於QCalendarModel的實施。

所以我認爲這是不可能的。我看到的唯一方法是將QCalendarWidget源文件複製到您的項目中,並重命名類以避免與現有Qt類衝突。然後你可以改變實現。在任何使用最小和最大日期的地方(例如,在QCalendarModel::flags函數中),您應該使用啓用/禁用的班級列表來替換它。

如果您在我的嘗試中發現有用的東西,我已發佈代碼here。代理模型被接收並且所有單元格的背景都變成綠色。

+0

很多謝謝你的回答,抱歉我遲到的回覆。我會在下週嘗試您的解決方案並檢查您的源代碼。 –