【Qt】QPushbutton トグル / text
ボタンを作成したときに押しっぱなしにするのはどうしたらいいかな等、色々調べたことがあったので、備忘録としてまとめてみました。
トグル
1回押す→ボタン凹む→もう1回押す→ボタン凸む(初期状態に戻る)→以後繰り返し
前提として、UI作成画面からpushButtonを作成します。
右メニューのQAbstractButton→checkableにチェック入れる ※1
UI上だとこれだけでトグルボタンになってくれて、
初期状態だと白、1回押すと色が青(押された状態)になりました。
ボタン上右クリック→「スロットへ移動…」の項目で以下の関数を作成します。
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"); } }
ボタンtext読み取り
QString test = ui->pushButton->text();
私の場合、使わないと記憶を無にしたかごとく忘れるのでメモ。
普通の人間なら忘れないんだろうなあ……。
次回、ボタンで色変更するやつどうだっけを思い出したい。
参考:
https://doc.qt.io/qt-5/qpushbutton.html
https://doc.qt.io/qt-5/qabstractbutton.html#text-prop