2

私は Qt プラットフォームの C++ プログラマーです。

イベント ループはどのウィジェットにイベント (主にマウス/キーボード イベント) を送信するかをどのように「認識」するのでしょうか? マウス座標と Z オーダーに基づいて実行されますか? キーボードからのイベントはどうですか?

ありがとう

4

2 に答える 2

0

それはわからない。

イベントをキャプチャーする場合は、イベントをキャプチャーするか、イベントの受け渡しを許可するイベント フィルターを作成する必要があります。

これは、私が以前に作成した非常に単純なイベント フィルターです。

bool OGL_widget::eventFilter(QObject *obj, QEvent *event) {
    switch (event->type()) {
    case QEvent::KeyRelease:
    case QEvent::KeyPress: {
        QKeyEvent *key = static_cast<QKeyEvent*> (event);
        if (!key->isAutoRepeat())
            key_event_queue << *key;
    }
    break;
    case 1001:
    case 1002: {
        Savestate_event *save = static_cast<Savestate_event*> (event);
            save_event_queue << *save;
    }
    break;
    }

    return QObject::eventFilter(obj, event);
}

Qt docs でよく書かれたイベントの記事をご覧ください。

于 2015-01-29T20:14:19.173 に答える