memo

プログラミング備忘録





【Qt】QPushbutton トグル / text

ボタンを作成したときに押しっぱなしにするのはどうしたらいいかな等、色々調べたことがあったので、備忘録としてまとめてみました。

トグル
1回押す→ボタン凹む→もう1回押す→ボタン凸む(初期状態に戻る)→以後繰り返し

前提として、UI作成画面からpushButtonを作成します。
右メニューのQAbstractButton→checkableにチェック入れる ※1

UI上だとこれだけでトグルボタンになってくれて、
初期状態だと白、1回押すと色が青(押された状態)になりました。

f:id:shinopikapi:20190522000323p:plain
初期状態
f:id:shinopikapi:20190522000358p:plain
押された後

ボタン上右クリック→「スロットへ移動…」の項目で以下の関数を作成します。

void Pika::on_pushButton_toggled(bool checked)
{
    if(checked){
        // 押されたときにやること
    }else{
        // 初期状態に戻った
    }
}


※もちろん、上記1の「checkableにチェック入れる」は以下でも設定できます。

    ui->pushButton->setCheckable(true); // checkableにチェック入れる

チェックいれたかどうか

    bool test = ui->pushButton->isCheckable();



ボタンtextを変更
以下では、押下時に「ON」、もう1回押下して初期に戻った時に「OFF」と表示。

void Pika::on_pushButton_toggled(bool checked)
{
    if(checked){
        // 押されたときにやること
        ui->pushButton->setText("ON");
    }else{
        // 初期状態に戻った
        ui->pushButton->setText("OFF");
    }
}

f:id:shinopikapi:20190523223055p:plain
押下
f:id:shinopikapi:20190523223116p:plain
初期状態

ボタンtext読み取り

        QString test = ui->pushButton->text();


私の場合、使わないと記憶を無にしたかごとく忘れるのでメモ。
普通の人間なら忘れないんだろうなあ……。
次回、ボタンで色変更するやつどうだっけを思い出したい。

参考:
https://doc.qt.io/qt-5/qpushbutton.html
https://doc.qt.io/qt-5/qabstractbutton.html#text-prop