ユーザーが2番目のモニターを使用していないときに、Qtライブラリを使用して2番目のモニターにスライドショーを表示しています。例として、ユーザーが最初のモニターでゲームをプレイし、2番目のモニターでスライドショーを表示している場合があります。
問題は、Qtで新しいウィンドウを開くと、以前のアプリケーションからフォーカスが自動的に奪われることです。これを防ぐ方法はありますか?
見つけるのに少し時間がかかりましたが、見つけました:setAttribute(Qt::WA_ShowWithoutActivating);
これにより、ウィンドウがアクティブになりません。 Qt::WindowStaysOnTopHint
国旗
フローティングプレビューボックス/その他のウィジェットを作成する場合は、以下を使用してください
thumbnail = new QLabel;
thumbnail->setAttribute(Qt::WA_ShowWithoutActivating);
thumbnail->setParent(0);
thumbnail->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);
Qt :: Toolは、それを機能させるための重要なフラグです。私は焦点を盗まないことを意味します。
ウィジェットはデフォルトでフォーカスを受け入れませんが、おそらくプレーンなウィジェットを作成していませんか?それはどのサブクラスでしたか? QMainWindowまたは何か他のもの?
ウィンドウのサブクラスがデフォルトでフォーカスを受け入れる可能性があるため、QWidget :: show()を呼び出す前に、Qwidget :: setFocusPolicyをQt :: NoFocusで明示的に呼び出してみてください。
また、ウィンドウまたはそのウィジェットでQWidget :: activateWindow()を呼び出していないことを確認してください。