バックグラウンド
最近、プロジェクトで要件が発生しました。マウス ボタンを押したままにするとデータを継続的に送信でき、マウスを放すとすぐに終了します。
しばらく考えてみると、おそらくいくつかのアイデアが考えられます (単なるアイデアであり、異なるものを実現することもできます)
1. マウス イベントを書き換え、マウスの検出を通じてそれを実現します。
2. タイマートリガーの実装。
3. 特定のパラメータまたはチェックコマンドを通じて実現します。
リサーチ
タイプ3
3 番目のものは私のニーズを満たしています。3 番目のものを試してください
widget.cpp ソース ファイル
ui->pushButton->setAutoRepeat(true); //启用长按
ui->pushButton->setAutoRepeatDelay(400);//触发长按的时间
ui->pushButton->setAutoRepeatInterval(50);//长按时click信号间隔
connect(ui->pushButton,&QPushButton::clicked,[&]{
qDebug()<<i++;
ui->horizontalSlider->setValue(i);
if(i>=100)i=100;//将最大值控制在100
});
効果はちゃんと効きます。
最良の方法
しかし、UIインターフェイスをよく見てみると、それほど面倒ではないことがわかり、チェックボックスをオンにすると問題が解決しました
Qtの長押し状態トリガー機能を実現するQpushButton
まとめ
要件の分解から実現まで、最適な方法を見つけて、半分の労力で 2 倍の結果を獲得しましょう。理解力の第 2 レベルの領域に到達してください。
トリプルレルム「親しみやすさ、強さの理解、神を募集」