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