Я хочу иметь возможность включать и отключать фильтрацию щелчков мышью по всему моему QMainWindow, нажав кнопку или клавишу, которая приведет к запуску фильтрации. Я хочу включить фильтр событий из класса, QMainWindow
,
Я хочу иметь в своем классе фильтр событий, который мы можем назвать MyWindow
из того, что я нашел, я должен сделать новый класс 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();
}
Есть ли способ реализовать фильтр событий внутри моего объекта?
Я думаю, что я, может быть, слишком усложнял вещи. Это так же просто, как подклассы mousePressEvent
,
void MouseFilter::mousePressEvent(QMouseEvent * event){
if(event->button() == Qt::RightButton){
qDebug() << "Right-o";
}
}
Я думаю, что вы ищете mousePressEvent который вы можете переопределить изнутри MyWindow
Ура,
Ростислав.
Фильтр событий используется для фильтрации событий на пути к другому объекту. Обработчик событий позволяет вам реализовать логику обработки событий. Фильтр событий также является обработчиком событий, но он работает, перехватывая события, связанные с получением другими объектами, и решает, следует ли и как проходить к месту назначения.
То, что вы хотите сделать, звучит так, как будто вы только хотите реализовать обработчик событий. Таким образом, фильтр событий не требуется.
Фильтр событий полезен, когда вы хотите заблокировать или перевести события или изменить поведение некоторого объекта, обработку событий которого вы не можете или не хотите переопределять.