コンテキスト (右クリック) メニューを Qt QListView に追加しようとしています。Qt 3.3には「contextMenuRequested」(私が使用できる)があることがわかります- http://doc.qt.digia.com/3.3/qlistview.html#contextMenuRequested。しかし、Qt4 ではそのような方法は見当たりません。QListViewにコンテキストメニューを追加する方法を知っている人はいますか?
3 に答える
でContextMenuPolicyを設定した方法に応じQWidget
て、いくつかのオプションがあります。
に設定した場合は、の保護された関数をQt::DefaultContextMenu
オーバーライドするだけです。これがデフォルトだと思います。contextMenuEvent(QContextMenuEvent*)
QWidget
に設定した場合はQt::ActionsContextMenu
、すべてのアクションをウィジェットに追加し、Qtシステムにコンテキストメニューの表示を処理させます。
または、設定したQt::CustomContextMenu
場合は、シグナルに接続しcustomContextMenuRequested()
て独自のコンテキストメニューハンドラーを実装する必要があります。
これはすべて、オンラインで入手できるContextMenuPolicyドキュメントに記載されています。
何を達成しようとしているのかわかりませんが、コンテキスト メニューに追加するQWidget::AddAction(QAction*)
アクションを呼び出してコンテキスト メニュー ポリシーを設定することで、任意のウィジェットにコンテキスト メニューを簡単に追加できます。
widget->setContextMenuPolicy(Qt::ActionsContextMenu);
ウィジェットはコンテキスト メニューを準備して表示します。アクションtriggered()
シグナルを適切なハンドラーに接続するだけです。
シグナルが削除された理由はわかりませんが、それはまだなQWidget
ので、いつでもオーバーライドできます
void QWidget::contextMenuEvent ( QContextMenuEvent* );
また
void QWidget::customContextMenuRequested( const QPoint& pos );
ウィジェットのコンテキスト メニュー ポリシー設定によって異なります。