Qt 事件(QEvent*)与MousePresseEvent(QMouseEvent*)冲突?

Qt 事件(QEvent*)与MousePresseEvent(QMouseEvent*)冲突?,qt,button,qevent,mousepress,Qt,Button,Qevent,Mousepress,在QT中:我使用从QToolButton继承的类并重写事件(QEvent*),现在我想添加“mousePressEvent”,但它从未被命中,事件(QEvent*)是否与mousePressEvent(QMouseEvent*)冲突?多谢各位 bool IconLabel::event (QEvent* e ) { if ( e->type() == QEvent::Paint) { return QToolButton::event(e); } retur

在QT中:我使用从QToolButton继承的类并重写事件(QEvent*),现在我想添加“mousePressEvent”,但它从未被命中,事件(QEvent*)是否与mousePressEvent(QMouseEvent*)冲突?多谢各位

bool IconLabel::event (QEvent* e ) {
   if ( e->type() == QEvent::Paint) {
      return QToolButton::event(e);

   }
   return true;
}
void IconLabel::mousePressEvent(QMouseEvent* e)
{
   int a = 1;//example
    a = 2;// example//Handle the event
}
课程为:

class IconLabel : public QToolButton
{
    Q_OBJECT
public:
    explicit IconLabel(QWidget *parent = 0);
    bool event (QEvent* e );
    void mousePressEvent(QMouseEvent* e);
signals:

public slots:

};

小部件接收到的所有事件都通过
事件(..)
,然后重定向到相应的事件处理程序方法。您犯了一个错误,除了绘制事件之外,没有转发任何事件,如果您只想添加鼠标按下事件处理,请执行以下操作:

bool IconLabel::event (QEvent* e ) {
    if ( e->type() == QEvent::Paint ||
         e->type() == QEvent::QEvent::MouseButtonPress ) {
        return QToolButton::event(e);
    }
    return true;
}

此外,事件处理程序方法实际上应该处于受保护的状态,因为事件只应该通过事件队列(
QCoreApplication::postEvent(…)
,等等)分发!那我怎么才能让“mousePressEvent”的功能发挥作用呢?或者达到同样的效果?(我想先显示QToolButton的图标和一些文本(外观),但我不想看到QToolButton的其他行为。后来我想得到“mousePress”事件并做一些事情(即:当鼠标单击按钮时,我有一个处理该事件的功能))