Qt Buttonはボタン長押しイベントを実装します

バックグラウンド

最近、プロジェクトで要件が発生しました。マウス ボタンを押したままにするとデータを継続的に送信でき、マウスを放すとすぐに終了します。
しばらく考えてみると、おそらくいくつかのアイデアが考えられます (単なるアイデアであり、異なるものを実現することもできます)
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 レベルの領域に到達してください。
トリプルレルム「親しみやすさ、強さの理解、神を募集」

おすすめ

転載: blog.csdn.net/liuqingsongmsdn2014/article/details/131085959