Фильтрация щелчков мышью в Qt внутри класса

Я хочу иметь возможность включать и отключать фильтрацию щелчков мышью по всему моему 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";
}
}

0

Решение

Я думаю, что вы ищете mousePressEvent который вы можете переопределить изнутри MyWindow

Ура,
Ростислав.

1

Другие решения

Фильтр событий используется для фильтрации событий на пути к другому объекту. Обработчик событий позволяет вам реализовать логику обработки событий. Фильтр событий также является обработчиком событий, но он работает, перехватывая события, связанные с получением другими объектами, и решает, следует ли и как проходить к месту назначения.

То, что вы хотите сделать, звучит так, как будто вы только хотите реализовать обработчик событий. Таким образом, фильтр событий не требуется.

Фильтр событий полезен, когда вы хотите заблокировать или перевести события или изменить поведение некоторого объекта, обработку событий которого вы не можете или не хотите переопределять.

1

По вопросам рекламы [email protected]