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
イベント ハンドラーがインストールされていないかのように、それ自体は正常に動作します。