Qt中的長按事件
回答
你可以看看Qt的gesture framework,
你是後手勢將是QTapAndHoldGesture然後我想。
抱歉,不清楚。是的,我在談論按鍵。我想知道是否有辦法實現長按鍵。即如果我點擊按鈕,一旦它做了一個活動,如果我按兩次它做了另一個活動。現在我想按住一段時間來開始另一項活動。 – alfah
供參考:2017年第二個鏈接已經死亡,並且... Qt4.x?那麼做什麼:http://doc.qt.io/qt-5/gestures-overview.html和這個:http://doc.qt.io/qt-5/qtapandholdgestgest.html –
breadcrumbs:QT Quick 5有['pressAndHold'信號](http://doc.qt.io/qt-5/qml-qtquick-controls2-abstractbutton.html#pressAndHold-signal) –
您可以使用
keyPressEvent (QKeyEvent * event)
和
keyReleaseEvent (QKeyEvent * event)
的手柄long_press_event
的快速,容易和老式方式,如果你不想使用該手勢的東西去有點像這樣:
在頭聲明毫秒時間戳保持上次按下的時間。
private:
// Remembers the point in time when mouse button went down
quint64 mLastPressTime=0;
// Pressing and holding for one full second constitutes a "longpress", set whatever value in milliseconds you want here.
static const quint64 MY_LONG_PRESS_THRESHOLD=1000;
protected:
// Declare that we are overriding QWidget's events for mouse press and release
void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE;
void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE;
signals:
// Our custom signal to emit once a longpress is detected.
void longPressEvent(QMouseEvent *);
在源定義鼠標按下並釋放處理器,像這樣:
void MyClass::mousePressEvent(QMouseEvent *event)
{
// Remeber last time mousr was pressed
mLastPressTime=QDateTime::currentMSecsSinceEpoch();
}
void MyClass::mouseReleaseEvent(QMouseEvent *event)
{
// Calculate for how long the button has been pressed upon release
const quint64 pressTime = QDateTime::currentMSecsSinceEpoch() - mLastPressTime;
// The press time exceeds our "threshold" and this constitutes a longpress
if(pressTime > MY_LONG_PRESS_THRESHOLD){
// We pass the original mouse event in case it is useful (it contains all sorts of goodies like mouse posittion, which button was pressed etc).
emit longPressEvent(event);
}
}
注:我沒有編譯這段代碼,除了內置的編譯器在我的腦海裏面有很多非傳統擴展。
- 1. qt按鍵事件
- 2. 長按事件
- 3. Qt 3D中的按鍵事件
- 4. 映射按鍵事件qt
- 5. 優化長按事件
- 6. 單擊按鈕上的Qt C++事件
- 7. Qt事件中的中斷
- 8. Qt中的事件處理
- 9. Qt中的關鍵事件
- 10. Qt中的跟蹤事件
- 11. Qt Python單選按鈕:激活事件
- 12. Qt:事件是否按順序處理?
- 13. 長按安卓事件的錯誤
- 14. Windows平板電腦中的相機按鈕長按事件
- 15. 用長按/長按事件替換雙擊
- 16. Qt QGraphicsView事件
- 17. 在Qt中粘貼事件
- 18. QT用於按住鼠標按鈕的事件過濾器
- 19. 快速按下單按和長按事件的UIButton
- 20. 如何處理PanResponder長按事件?
- 21. 在長按之後移動事件
- 22. 模擬長按觸摸事件
- 23. 在長按事件上刪除LinearLayout
- 24. 長按鈕事件處理程序
- 25. 長按事件在按鈕上點擊Android在Android中點擊
- 26. QT中的QPushButton上的「點按並按住」觸摸事件的問題
- 27. QT事件問題
- 28. 鼠標事件QT
- 29. 與Qt的鼠標事件
- 30. Qt的事件交換
你說的是按鍵(鍵盤)還是點擊(鼠標)? –
這是桌面,symbian還是其他的東西?每種情況下的答案可能都不相同。 – Torp
抱歉,不清楚。是的,我在談論按鍵。我想知道是否有辦法實現長按鍵。即如果我點擊按鈕,一旦它做了一個活動,如果我按兩次它做了另一個活動。現在我想按住一段時間來開始另一項活動。 – alfah