2016-04-14 13 views
2

変数をプッシュボタンにリンクして、プッシュボタンが押されたときに初めて有効になるようにする方法、2回目に押したときにfalseにする方法、等々?Qtのボタンを押してブール変数を有効にする

私のプログラムでは、プッシュボタンが押されたときに特定のループが実行され、その変数がtrueに設定されているため、使いたいです。

誰かが私を助けることができますか?

答えて

2

これを達成するには、あなたのスロットにclicked()信号(固有のQPushButtonに固有)を接続する必要があります。このスロットでは、このスロットに入るたびにオブジェクトのブール値を変更するだけです。これは必要なコードです。あなたの.cppファイルで

private: 
    bool   bForButton; 
    QPushButton* m_button; 

public slots : 
    void onClicked(); 

:あなたの.hファイルで

MyClass::MyClass() 
{ 
    bForButton = false; 
    m_button = new QPushButton(this); 
    connect(m_button , SIGNAL(clicked()), this, SLOT(onClicked())); 
} 

void MyClass::onClicked() 
{ 
    bForButton = !bForButton; 
} 

この方法で、あなたはそれが毎回変化しますので、我々は、その反対にブール値を変更することがわかります必要に応じてボタンをクリックします。

0

状態を(チェックされているかどうかにかかわらず)保持するボタンを表示すると、その状態をクリックするたびにその状態が変化し、ユーザーは現在の状態を見ることができます。

あなたのボタンを確認することをsetCheckable(true)に設定し、ループの中でisChecked()の値をテストすることで達成できます。ボタンはの状態にチェックし、自動的にクリックして更新するので、余分なコードは必要ありません。

0

QPushButtonは、の可変性を有する。すなわち、checkedである。

auto button = new QPushButton(this); 
button->setCheckable(true); 

... 

connect(button, &QAbstractButton::toggled, 
    this, &ThisClass::executeLoop); 

... 
void ThisClass::executeLoop(bool checked) { 
    if (!checked) return; 
    .... your function body 
} 

http://doc.qt.io/qt-5/qabstractbutton.html#checked-prop

これはQtのの考え方でよりです:

あなたがtoggled信号に実行する必要があるループを接続することができませんループ/スピン/ロック/ ...フレームワークによってトリガされたイベント(つまり、信号をスロットに接続する)に反応します。

関連する問題