PyQt で画像のビューアを作る 13

190711

カスタムwidgetの手直し

  • UIもコードも全面的に書き換えた
    基本的な考え方は同じだけど自分なりに頭を整理して書き直した
  • 大きなプログラムではなくて特定の部品のコードを書くのも楽しい
    チューンアップしたくなるというか、ぎりぎりまで効率的に書きたくなる
  • クラス化して、細分化して書く方法は再利用も容易だし手直しもしやすいし、確かに効率的だ
    何よりきちんとクラス化してあれば書き直しても全体プログラムに与える影響はほぼ無いから安心
    オブジェクト指向プログラミングは必要から生まれた結果なんだろうなあ

設計など

①Qwidgetの派生クラス
②親から色をもらって表示、widgetでRGB,HSVを自由に操作して色を調整、その都親にシグナルでQColorを送る

  • よく考えたつもりだったんだけど不具合があった┐('д')┌
  • スライダーの扱い、マウスとキーで変更できるが、親から色をもらったときはプログラムから設定する
    シグナルをvalueChangedにすると,プログラムから変更した場合も来てしまいおかしくなる
    sliderMovedだとマウスのみに反応するが、キーには反応しない
    ここら辺がうまく対応できない
    結果としてフラグを立てて、プログラムからいじった場合はシグナルをパスするようにした
  • しかしスマートさに欠けるので直したいんだがどうしたら良いのだろう??

190712

  • ホワイトポイント、rect.contains()で画像以外のクリックは無視するようにした
  • カラーウィジェットのスライダー動作については、トリガーを変えてうまくいった
    actionTriggered を使えば良い
    プログラム的なデータ設定は無視して、マウスとキーボード、ユーザーからの変更にのみ対応してくれる
    これってQAbstractSlider のドキュメント上は一番目のシグナルだったが、何となくわかりづらいよね

190714

  • ホワイトポイント補正について、直接テーブルを作って画像を補正していたが、データをベジェに送ってそこでテーブルを作らせるようにした。ベジェ経由で補正するって事です
  • そのためにベジェを天井に張り付くようにも描けるようにして、その際のテーブルも作れるようにしてみた
  • この部分は結構難しくてあんまり自信ない
    ベジェを三色独立して操作できるenhancer2だから実現できた機能で、ホワイトポイント補正は直線補正だから、そのあとベジェで曲線の補正が出来るようになる
  • しかし、補正は確かにできるけど三色独立して自分の思うように補正するのは至難の技だと思う
    自由度が高ければ良いというモノでも無いんだなあ、enhancer2はだめかな┐('д')┌

→ 戻る PyQt で画像のビューア

END

Close