Qt中的长按事件

Qt中的长按事件,qt,events,Qt,Events,我只是想知道在Qt中是否有一个长新闻事件可用 当前正在使用的模块需要长按。我在C7中看到了卸载的长按 按钮点击事件和按钮按下事件给出相同的结果,对吗 阿尔法您可以使用 keyPressEvent ( QKeyEvent * event ) 及 对于长按事件的处理您可以查看Qt, 我想,你所追求的手势应该是这样的。如果你不想使用这种手势,那么快速、简单、老式的方法是这样的: 在标题中声明一个毫秒时间戳以保存上次按下的时间 private: // Remembers the point i

我只是想知道在Qt
中是否有一个长新闻事件可用 当前正在使用的模块需要长按。我在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);
    }
}