4

QTreeWidget基本的に、特定のイベントを傍受するためにこのコードがあります。

MyWidget :: MyWidget ()
{
     m_tree = new QTreeWidget ();
     // ...
     m_tree -> installEventFilter (this);
}

bool MyWidget :: eventFilter (QObject * obj, QEvent * e)
{
    if (m_tree != obj)
        return QWidget :: eventFilter (obj, e);

    qDebug () << e -> type ();

    switch (e -> type ())
    {
        case QEvent :: MouseButtonPress:
        case QEvent :: MouseButtonRelease:
        case QEvent :: MouseMove:
        case QEvent :: Leave:
            qDebug () << "GOT EM";
            break;
    };

    // ...
 }

をクリックして 内を移動するQTreeWidgetと、イベント ハンドラe->type()は多くのイベントを出力しますが、マウス イベントは出力しません。マウス イベントは発生しないようです (例外を除くLeave)。

なぜこうなった?少なくとも 1 つのボタンが押されていれば、マウス トラッキングがオフになっていても移動イベントを取得する必要があります。QTreeWidgetイベント ハンドラーがインストールされていないかのように、それ自体は正常に動作します。

4

0 に答える 0