2016-02-04 3 views
10

チェックボックスを読み取り専用にするには良い方法ですが、は灰色で表示されません(ほとんど見えません)。QCheckBoxを読み取り専用にする方法(灰色で表示されないようにする)

  1. 私が働くsetEnabled(bool)を使用していますが、チェックボックスは、
  2. 私はトグル信号に反応し、状態をリセットすることができグレー表示とほとんど読みやすいです。しかし、ボックスが読み取り専用であるかどうかを判断してチェック状態をリセットするフラグが必要な場合は、自分でCheckBoxクラスを作成する必要があります。
  3. setCheckableはどちらか動作しません、それは私がすべてチェックされた状態を設定することはできません:

    cb = this->ui->cb_RealWorld->isCheckable(); 
        this->ui->cb_RealWorld->setCheckable(true); 
        this->ui->cb_RealWorld->setChecked(someValue); 
        this->ui->cb_RealWorld->setCheckable(cb); 
    

だから私は持っている最高のものは、グレーアウト有効/無効にし、受け入れる使用することですスタイル。

------- -------編集

私は有効のような無効のチェックボックスのスタイルを設定することができ期待していたstylesheet examples後。これまでに失敗しました。具体的には:examplesのようなアイコンを変更することは私にとってはうまくいかず、私はWindowsを使用していて、アイコンは例のようにパスの下にないためです。


PS:関連が、ここでは応答なし

Disabling a QCheckbox in a tricky way
Qt - How to disable QCheckBox while retaining checked state?

+0

「読み取り専用」とはどういう意味ですか?チェックボックスは情報を記録するのではなく、何かの状態のみを記録します。 – Poriferous

+0

は読み取り専用:使用がところで読み取り専用テキスト –

+1

を変更することはできませんにQLineEditに、私はdownvoteを理解していないようなユーザは、チェックボックスの状態を変更することはできません。でも気にしないで。 –

答えて

10

私のコードの下に次:

this->ui->cb_RealWorld->setAttribute(Qt::WA_TransparentForMouseEvents); 
this->ui->cb_RealWorld->setFocusPolicy(Qt::NoFocus); 
+0

ありがとう、ちょうどこれに追加する。チェックボックスは「有効」と「チェック可能」のままにします。これにより、コントロールはマウスイベントを無視し、フォーカスを得ることができなくなります。 – gimp3695

5

これは関数としてDevopiaのソリューションです:

void SetReadOnly(QCheckBox* checkBox, bool readOnly) 
{ 
    checkBox->setAttribute(Qt::WA_TransparentForMouseEvents, readOnly); 
    checkBox->setFocusPolicy(readOnly ? Qt::NoFocus : Qt::StrongFocus); 
} 
関連する問題