Qt之 QpushButton 實現長按下狀態觸發功能

最近有一個需求,按下按鈕時,收據開始接收,鬆開按鈕,停止接收。


但是QT的QPushButton不像mfc中的按鈕只要按住就會一直髮一個消息,它只會發一次pressed信號,

解決辦法:就是收到pressed信號時創建個定時器,定時器不停觸發一個槽函數,鬆開按鈕時收到released信號,停止定時器。

例子:

QTimer *timer = new QTimer;
connect(timer,SIGNAL(timeout()),this,SLOT(window_down())); //window_down爲你自己編寫的功能函數
void main_interface::on_window_up_pressed()
{
    up_timer->start(20);
}
 
void main_interface::on_window_up_released()
{
    up_timer->stop();
}

網友遇到了這個問題,我特地試了一下:
一直按住按鈕時,如果此時我的軟件因爲其他原因彈出個對話框,此時按鈕恢復非按下狀態,但是它不發射released信號!所以定時器沒有停止!

解決方法:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章