Qt中的长按事件
我只是想知道在QtQt中的长按事件,qt,events,Qt,Events,我只是想知道在Qt中是否有一个长新闻事件可用 当前正在使用的模块需要长按。我在C7中看到了卸载的长按 按钮点击事件和按钮按下事件给出相同的结果,对吗 阿尔法您可以使用 keyPressEvent ( QKeyEvent * event ) 及 对于长按事件的处理您可以查看Qt, 我想,你所追求的手势应该是这样的。如果你不想使用这种手势,那么快速、简单、老式的方法是这样的: 在标题中声明一个毫秒时间戳以保存上次按下的时间 private: // Remembers the point i
中是否有一个长新闻事件可用 当前正在使用的模块需要长按。我在C7中看到了卸载的长按 按钮点击事件和按钮按下事件给出相同的结果,对吗 阿尔法您可以使用
keyPressEvent ( QKeyEvent * event )
及
对于长按事件的处理您可以查看Qt,
我想,你所追求的手势应该是这样的。如果你不想使用这种手势,那么快速、简单、老式的方法是这样的: 在标题中声明一个毫秒时间戳以保存上次按下的时间
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 *);
在source中定义鼠标按下和释放处理程序,如下所示:
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);
}
}
注意:我没有编译这段代码,除了我头脑中的内置编译器,它有很多非传统的扩展。你说的是按键(键盘)还是点击(鼠标)?这是桌面、symbian还是其他什么?每种情况下的答案可能不同。对不起,不清楚。是的,我说的是按键。我想知道是否有办法实现长按键。即如果我点击按钮一次,它做一个活动,如果我按两次,它做另一个活动。现在我想按住一段时间,开始另一项活动。对不起,不清楚。是的,我说的是按键。我想知道是否有办法实现长按键。即如果我点击按钮一次,它做一个活动,如果我按两次,它做另一个活动。现在我想按住一段时间,开始另一项活动。仅供参考:第二个链接已断开,并且。。。2017年的Qt4.x?这样做怎么样:这个:breadcrumbs:QT Quick 5有
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);
}
}