7

コンテキスト (右クリック) メニューを Qt QListView に追加しようとしています。Qt 3.3には「contextMenuRequested」(私が使用できる)があることがわかります- http://doc.qt.digia.com/3.3/qlistview.html#contextMenuRequested。しかし、Qt4 ではそのような方法は見当たりません。QListViewにコンテキストメニューを追加する方法を知っている人はいますか?

4

3 に答える 3

19

でContextMenuPolicyを設定した方法に応じQWidgetて、いくつかのオプションがあります。

に設定した場合は、の保護された関数をQt::DefaultContextMenuオーバーライドするだけです。これがデフォルトだと思います。contextMenuEvent(QContextMenuEvent*)QWidget

に設定した場合はQt::ActionsContextMenu、すべてのアクションをウィジェットに追加し、Qtシステムにコンテキストメニューの表示を処理させます。

または、設定したQt::CustomContextMenu場合は、シグナルに接続しcustomContextMenuRequested()て独自のコンテキストメニューハンドラーを実装する必要があります。

これはすべて、オンラインで入手できるContextMenuPolicyドキュメントに記載されています。

于 2011-10-06T05:53:14.283 に答える
6

何を達成しようとしているのかわかりませんが、コンテキスト メニューに追加するQWidget::AddAction(QAction*)アクションを呼び出してコンテキスト メニュー ポリシーを設定することで、任意のウィジェットにコンテキスト メニューを簡単に追加できます。

widget->setContextMenuPolicy(Qt::ActionsContextMenu);

ウィジェットはコンテキスト メニューを準備して表示します。アクションtriggered()シグナルを適切なハンドラーに接続するだけです。

于 2010-05-20T16:53:22.460 に答える
2

シグナルが削除された理由はわかりませんが、それはまだなQWidgetので、いつでもオーバーライドできます

void QWidget::contextMenuEvent ( QContextMenuEvent* );

また

void QWidget::customContextMenuRequested( const QPoint& pos );

ウィジェットのコンテキスト メニュー ポリシー設定によって異なります。

于 2010-05-19T22:47:36.360 に答える