Qt中默认的qpushbutton没有longpress事件,当需要相应btn的longpress事件的时候,就需要重载一下qpushbutton的press和release事件。
DycPushButton.h
<pre name="code" class="cpp">#ifndef DYCPUSHBUTTON_H
#define DYCPUSHBUTTON_H
#include "qpushbutton.h"
#include <QTimer>
#define TIMERSTART true;
#define TIMESTOP false;
class DycPushButton:QPushButton
{
public:
DycPushButton();
private:
QTimer m_pcPressTimer;
int m_nPressTime;
bool m_bTimerStart;
public :
void setLongPressTime(int PressTime);
public:
bool mousePressEvent(QMouseEvent *event);
bool mouseReleaseEvent(QMouseEvent *event);
bool mouseDoubleClickEvent(QMouseEvent *event);
bool mouseMoveEvent(QMoveEvent *event);
signals:
onBtnLongPressed(