Qt4.5 を使用して Qt/C++ でアプリを作成しようとしていますが、マウスオーバー イベントでアクティブなウィンドウの不透明度を変更したいと考えています...
私が理解しているように、Qtには明示的なマウスオーバーイベントはありません。
ただし、メインウィンドウを宣言するクラスで QWidget の mousemoveevent() を再実装することで、初歩的な機能を実現しました。しかし、マウスがそこに作成したグループボックスのいずれかの上を移動するたびに、メインウィンドウの mousemoveevent は呼び出されません (当然のことながら、QGroupbox には mousemoveevent の独自の再実装があるため)。
したがって、安価な回避策として、メインウィンドウの mousemoveevent を引き続き使用していますが、グローバルマウス位置をクエリし、メインウィンドウの (x,y) 位置 (->pos() で取得) とウィンドウサイズ ( -> サイズ -> rHeight および rWidth)、マウスがメインウィンドウの領域の境界内にあるかどうかを確認し、不透明度を変更します。
これは非常に限られた成功しか収めていません。右の境界線は正常に機能し、左の境界線は不透明度を 4 ピクセル早く変更します。上部が機能せず (おそらくマウスがメニューバーとタイトル バーを通過するため)、下部の変更が早すぎます。
空のコンテナ QWidget クラスを作成し、そこに残りをすべて配置することを考えましたが、子ウィジェットに既に実装されている場合、基本ウィジェットが mousemoveevent を受信しないという大きな問題はまだ解決されないと感じました。
私の方法で行った修正/エラー、またはこれを達成するための代替方法を提案してください。
psこれが問題になるとは思えませんが、VS2008へのQtの統合ではなく、Qt Creator IDEで作業しています(とにかく同じクラスです-ただし、コンパイラは異なります、mingw)