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
関数内など) では、有効/無効のクラス リストを使用して置き換える必要があります。
私の試みで何か役に立つものを見つけた場合に備えて、ここにコードを公開しました。プロキシ モデルが受け入れられ、すべてのセルの背景が緑色になります。