変数をプッシュボタンにリンクして、プッシュボタンが押されたときに初めて有効になるようにする方法、2回目に押したときにfalseにする方法、等々?Qtのボタンを押してブール変数を有効にする
私のプログラムでは、プッシュボタンが押されたときに特定のループが実行され、その変数がtrueに設定されているため、使いたいです。
誰かが私を助けることができますか?
変数をプッシュボタンにリンクして、プッシュボタンが押されたときに初めて有効になるようにする方法、2回目に押したときにfalseにする方法、等々?Qtのボタンを押してブール変数を有効にする
私のプログラムでは、プッシュボタンが押されたときに特定のループが実行され、その変数がtrueに設定されているため、使いたいです。
誰かが私を助けることができますか?
これを達成するには、あなたのスロットに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;
}
この方法で、あなたはそれが毎回変化しますので、我々は、その反対にブール値を変更することがわかります必要に応じてボタンをクリックします。
状態を(チェックされているかどうかにかかわらず)保持するボタンを表示すると、その状態をクリックするたびにその状態が変化し、ユーザーは現在の状態を見ることができます。
あなたのボタンを確認することをsetCheckable(true)
に設定し、ループの中でisChecked()
の値をテストすることで達成できます。ボタンはをの状態にチェックし、自動的にクリックして更新するので、余分なコードは必要ありません。
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
信号に実行する必要があるループを接続することができませんループ/スピン/ロック/ ...フレームワークによってトリガされたイベント(つまり、信号をスロットに接続する)に反応します。