2025年7月16日水曜日

QSpinBox padding

グレー枠の原因はあきらめて、31.1からやたら大きくなってしまったSpinBoxの原因を探ってみました。

色々と見て行くとどうやらYami.obtというstylesheetフォーマットのファイル中にたどりつきました。

ただ実際にどのように反映されているのか良くわかっていなく、このファイルを反映するにはリビルドすることが必須となってしまっていてトライアンドエラー方式で確認するのは結構痛いかった。そのうちpowershellでfindstrを使ってソース検索したときに

obs-studio\build_x64\rundir\Release\data\obs-studio\themes\Yami.obt

obs-studio\frontend\data\themes\Yami.obt

と表示され、単純にコピーされているだけという事実に…。記憶でどこかにobs-studioを使い始めたときにスタイルシートがどこかに入っていた記憶があったのだが、ユーザーフォルダ内のAppData\Roamingの中を探してなかったのであきらめていたが、よく考えればインストールフォルダにあるのが当然なのですが。

コンパイルの必要が無くなり、ようやく細かな点を確認できるようになりました。 

31.1からスペーシングやパディングを変更したために悪影響が出ているのと、全体的に修正作業がやっつけっぽいので細かいところでいろいろとおかしくなっています。

ザックリと31.0.4のYami.obtの比較しても全体的に修正が加わっているためにパッと見ではよくわかりませんが、細かく見て行くとQSpinBoxはベースとなるQPlainTextEditとQSpinBoxに付随するup-button,down-buttonが組み合わさって構成されていました。(Qtのドキュメントを見た方が早いとは思う…が、) 

最初にQSpinBoxのpaddingの記述が違っているのでそこから様子を見ることに。

結論から言えば、QSpinBoxは内部のQPlainTextEditのpadding分と自身のpadding分が反映されるため、巨大化しているようです。極端な話、QSpinBoxのpaddingを 0px 0pxで指定すれば全体的にスッキリします。ただ、スピンのボタンが小さくなりすぎるので、UIデザイン的には反則気味にw

31.1の変更状態を考慮すると、marginは触らずにpaddingだけで行っている感じがするのと、QSpinBoxはやはり大きめにしたいのではないかと考え、

QSpinBox,
QDoubleSpinBox {
    background-color: var(--input_bg);
    border: 1px solid var(--input_bg);
    border-radius: var(--border_radius);
    padding: var(--input_padding) var(--input_text_padding);
    padding: var(--input_padding) 0px;
    height: var(--input_height);
    max-height: var(--input_height);
}

としてみました。左右の無駄なパディングを消した形です。31.0.4と比べ、height指定が増えていますが、これ、正直意味をなしていないようで…。

あとは気になるポイントとしてはスピンボタンの上下にある間の隙間。それとこれでも右側の隙間が無駄に存在している点も気にはなります。min-widthとか設定できたりするのかな?

試行錯誤中の状態がこちら 



何となく行けそうな雰囲気?

0 件のコメント:

コメントを投稿