1

qtreeviewが選択されているときにEnterキーが押されたときに「イベント」が発生することを望みます。qtreeviewをサブクラス化したくないので(デザイナーにとっては簡単です)-イベントフィルターをインストールしようとしました。しかし、これはうまくいかなかったようです:

このクラスには、パブリック関数が含まれているだけです。

bool InputTreeEventHandler::eventFilter(QObject *obj, QEvent *event) const {
    if (event->type() == QEvent::KeyPress) {
        QKeyEvent *keyevent = dynamic_cast<QKeyEvent*>(event);
        QTreeView* tree = dynamic_cast<QTreeView*>(obj);
        if (keyevent->key() == Qt::Key_Enter) {
            //code
        }
    } else {
        return false;
    }

}

そして、イベントは次のように追加されます。

ui.InputTreeView->installEventFilter(InputTreeKeyboardEater.get());

ui.InputTreeViewEnterキーを押したときに実行したいツリービューとInputTreeKeyboardEater、オブジェクトへの(共有)ポインタはどこにありますかInputTreeEventHandler

上記の関数の開始時にブレークポイントを設定すると、イベントハンドラー全体が呼び出されていないことが示されます-何が間違っている可能性がありますか?

4

1 に答える 1

4

ここを参照してください-QObject::eventFilterあなたの問題を説明するconstではありません。 InputTreeViewそこにない非constバージョンを呼び出すことを探しています。またeventFilter、それは重要ではないと思いますが、公開されていない状態で保護されています。

于 2012-02-13T20:47:38.293 に答える