メインウィンドウ上でモーダルダイアログボックスを起動できるアプリケーションがあります。メインウィンドウには、バックグラウンドで実行されているネットワークアクティビティがあり、バックグラウンドUIが更新されます。これにより、モーダルダイアログが開いていてもアプリケーションメニューにアクセスできるようになります。
どうすればこれを回避できますか?どんな助けでも大歓迎です。
私はMac、Qt、Carbonを使用しています。
メインウィンドウ上でモーダルダイアログボックスを起動できるアプリケーションがあります。メインウィンドウには、バックグラウンドで実行されているネットワークアクティビティがあり、バックグラウンドUIが更新されます。これにより、モーダルダイアログが開いていてもアプリケーションメニューにアクセスできるようになります。
どうすればこれを回避できますか?どんな助けでも大歓迎です。
私はMac、Qt、Carbonを使用しています。
Mac OS Xではアプリケーションメニューを無効にすることはできません。常に「アクティブ」ですが、ダイアログが表示されているときに使用したくないアクションを無効にすることはできます。
モーダルダイアログに独自のメニューバーを作成させることができます。これにより、ダイアログが表示されている間、メインウィンドウが上書きされます。
アクションを許可したくない場合は、ダイアログを親として空のQMenuBarを作成するだけです。あなたもそれを表示する必要はありません。Qtはそれを見つけて、自動的にグローバルメニューバーにプロモートします。
私はUbuntuでも同様の問題を抱えていたので、これでMacOSXでも問題が解決する可能性があります。簡単です。QMenu.nativeMenuBar
メインメニューバーのプロパティを無効にするだけmenuBar->setNativeMenuBar(false)
です。ここで受け入れられた回答を参照してください:モーダルダイアログボックスでアクティブなグローバルアプリケーションメニュー(Linuxの場合)