быстрый , легкий и старомодный способ, если вы не хотите использовать этот жест, материал выглядит примерно так:
В заголовке объявляется метка времени в миллисекундах для хранения времени последнего нажатия.
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);
}
}
ПРИМЕЧАНИЕ. Я не компилировал этот код, за исключением встроенного в мою голову компилятора, который имеет множество нетрадиционных расширений.