カンテラの光の下で

dNaga392's memorandom

【Qt】【QCheckBox】QCheckBoxの選択範囲の変更

QCheckBox の選択範囲を横幅いっぱいにする方法について。

スタイルシートで背景色を設定すると横幅いっぱいに色が設定されますが、
チェックできる範囲(チェックボックスとテキスト領域)と異なる範囲のため、
選択範囲を変えたいという事情がありました。

まずは自分なりに調べたのですが、空白文字を詰めるという方法が
StackOverFlowで見つかっただけ。。。

困って Qt 日本 ユーザー会 のMLで質問したところ
@soramimi_jp さんからご回答いただいた方法がスマートだったのでご紹介。


  1. QCheckBoxを継承したクラスを作成します。

    例: class MyCheckBox : public QCheckBox

  2. hitButton関数をオーバーライドします。

    bool MyCheckBox::hitButton(const QPoint &pos) const { return QAbstractButton::hitButton(pos); }

  3. デザイナで、チェックボックスを右クリックして、「格上げ先を指定...」を選びます。

  4. [格上げされたクラス名]に MyCheckBox を入力します。

  5. [追加]ボタンを押します。

  6. [格上げ]ボタンを押します。

  7. ビルドして実行。


以上です。