2017-07-13 6 views
-1
void MainWindow::mousePressEvent(QMouseEvent* event) 
{ 
    if(event->button() == Qt::LeftButton) 
    { 
     timer->start(timer_time); 
    } 
} 

void MainWindow::mouseReleaseEvent(QMouseEvent* event) 
{ 
    if(event->button() == Qt::LeftButton) 
    { 
     timer->stop(); 
    } 
} 

このコードは、私のアプリケーション内で使用すると機能しますが、外部で使用したい場合は動作しません。これどうやってするの? LeftButtonを押すとタイマーを開始し、LeftButtonが離されると停止します。QT/C++ globalyをチェックする方法は、マウスを押すか、または離しますか?


SOLUTION:understanding-the-low-level-mouse-and-keyboard-hook-win32


+1

_ "私は外で使ってみたいですか" _精緻化してください、どういう意味ですか? – user0042

+0

@DamianSośnickiあなたのアプリからマウスイベントを取り出したいですか? – aghilpro

+1

[C++:マウスクリックが発生した場合にどのようにキャッチするか]の可能な複製(https://stackoverflow.com/questions/10817860/c-how-to-catch-mouse-clicks-wherever-they-happen) – MatTheWhale

答えて

1

それはhooksのように聞こえるが、あなたが探しているものです。

基本的に、フックを使用すると、システム内のアクティビティと対話でき、その動作を変更することができます。

コード内のイベントリスナーは、OSがQTアプリケーションに委任したマウスイベントのみを捕捉します。このため、アプリケーション内でコードを使用する場合にのみコードが機能します。フックを使用すると、マウスイベントをシステムレベルで傍受し、アプリケーションで処理させることができます。

Hereの設定には何を使用すればいいですか。実装の詳細についてはhereの案内です。

+0

ええ、私はそれを得るが、今:このフックを削除することはできますか?私のchechboxがうんざりしている場合、私はマウスをキャプチャしたいですが、チェックされていなければ、私はそれをオフにします。 –

+0

まさにそういう機能を持つ 'UnhookWindowsHookEx'という別の関数があります。その関数のドキュメントは、私が提供したMSDNのリンクからアクセス可能でなければなりません。しかし、私は個人的には、非常に高いCPU使用率の状態で、フックが突然、突然消えてしまう問題に遭遇したことに留意してください。あなたのフックが無作為に動作しなくなったバグに出くわしたことがあれば、心に留めておいてください。 – MatTheWhale

関連する問題