2017-06-17 7 views
2

QDockWidgetsはすべてQuit 5.6を使用しているclosabaleではありません。したがって、そのうちの1つのタイトルバーを右クリックしたときに表示されるコンテキストメニューではエントリが無効になっているだけなので、コンテキストメニュー全体を無効にしたいと思います。QDockWidgetのタイトルバーのコンテキストメニューを無効にする方法

contextMenuPolicyをNoContextMenuに設定しようとしましたが、成功しませんでした。

次に、QDockWidgetのサブクラスを使用しようとしましたが、ContextMenuEventをオーバーライドして無視しました。メニューは引き続き表示されます。

私はその後、私はアイデアの出だ

によってContextMenuEventをキャッチするイベントフィルタをインストールしようとしたが、それはいずれかをキャッチしていない、ただPaintEvents、ResizeEventsなど...任意の助けをいただければ幸いです!

+0

[コンテキストメニューポリシー](http://doc.qt.io/qt-5/qwidget.html#contextMenuPolicy-prop)を設定しましたか? –

+0

はい、私も成功なしでこれを試しました...私はちょうどそこにそれを書くのを忘れました;-) –

+0

これまでに試したことを示すためにあなたの質問を編集してください。ドックウィジェットのコンテキストメニューポリシーを['Qt :: PreventContextMenu'](http://doc.qt.io/qt-5/qt.html#ContextMenuPolicy-enum)に設定すると、私の仕事ができます。 –

答えて

3

コメントを1として、それは上のコンテキストメニューポリシーを設定する必要があるQDockWidget ... Qt::PreventContextMenu

dock_widget->setContextMenuPolicy(Qt::PreventContextMenu); 

ではなく、単にQt::NoContextMenu

documentation Qt::NoContextMenuからは、親ウィジェットを完全に防止するのではなく、コンテキストメニューの処理を単に延期します。

関連する問題