在 class 内过滤 Qt 中的鼠标点击
Filtering Mouse clicks in Qt within a class
我希望能够启用和禁用过滤鼠标点击我的整个 QMainWindow 按下按钮或键将导致过滤开始。我想从 class、QMainWindow
.
中启用事件过滤器
我希望能够在我的 class 中有一个事件过滤器,我们可以调用 MyWindow
,根据我的发现,我应该制作一个新的 class MouseFilter
, 重新定义 eventFilter(QObject* object,QEvent* event)
并安装到 myWindow
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MyWindow w;
w.installEventFilter(new MouseFilter());
w.show();
return a.exec();
}
有没有一种方法可以从我的对象内部实现事件过滤器?
解决方案
我想我可能把事情复杂化了。它就像 subclassing mousePressEvent
.
一样简单
void MouseFilter::mousePressEvent(QMouseEvent * event){
if(event->button() == Qt::RightButton){
qDebug() << "Right-o";
}
}
我认为您正在寻找的是 mousePressEvent,您可以从 MyWindow
中覆盖它
干杯,
罗斯蒂斯拉夫
事件过滤器用于过滤事件到另一个对象的过程。事件处理程序允许您实现事件处理逻辑。事件过滤器也是事件处理程序,但它的工作方式是拦截事件,绑定到其他对象接收,并决定是否以及如何传递到目的地。
你想做的事情听起来像是你只是想实现一个事件处理程序。所以不需要事件过滤器。
当您想要阻止或翻译事件,或者改变您不能或不想覆盖其事件处理的某些对象的行为时,事件过滤器很有用。
我希望能够启用和禁用过滤鼠标点击我的整个 QMainWindow 按下按钮或键将导致过滤开始。我想从 class、QMainWindow
.
我希望能够在我的 class 中有一个事件过滤器,我们可以调用 MyWindow
,根据我的发现,我应该制作一个新的 class MouseFilter
, 重新定义 eventFilter(QObject* object,QEvent* event)
并安装到 myWindow
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MyWindow w;
w.installEventFilter(new MouseFilter());
w.show();
return a.exec();
}
有没有一种方法可以从我的对象内部实现事件过滤器?
解决方案
我想我可能把事情复杂化了。它就像 subclassing mousePressEvent
.
void MouseFilter::mousePressEvent(QMouseEvent * event){
if(event->button() == Qt::RightButton){
qDebug() << "Right-o";
}
}
我认为您正在寻找的是 mousePressEvent,您可以从 MyWindow
干杯, 罗斯蒂斯拉夫
事件过滤器用于过滤事件到另一个对象的过程。事件处理程序允许您实现事件处理逻辑。事件过滤器也是事件处理程序,但它的工作方式是拦截事件,绑定到其他对象接收,并决定是否以及如何传递到目的地。
你想做的事情听起来像是你只是想实现一个事件处理程序。所以不需要事件过滤器。
当您想要阻止或翻译事件,或者改变您不能或不想覆盖其事件处理的某些对象的行为时,事件过滤器很有用。