フィルタリングを開始するボタンまたはキーを押すことで、QMainWindow 全体でのマウス クリックのフィルタリングを有効または無効にできるようにしたいと考えています。クラス内からイベントフィルターを有効にしたいQMainWindow
.
クラス内に eventfilter を呼び出すことができるようにしたいのですが、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";
}
}