あなたが何を望んでいるのか理解できたかどうかわかりません。ただし、マウスの右クリックでポップアップ メニューを表示する場合は、最初にウィジェット (またはウィンドウ クラス) のヘッダー ファイルでマウス イベントに関連する関数をオーバーライドし、ポップアップ メニューを表示する関数を宣言する必要があります。したがって、ヘッダー ファイルには次の宣言が含まれている必要があります。
...
void Popup(const QPoint& pt);
void mousePressEvent(QMouseEvent *event);
...
関数の cpp ファイル定義では、次のようになります。
void testQt::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::RightButton) {
this ->Popup(event ->pos());
event->accept();
}
}
void testQt::Popup(const QPoint& pt)
{
QPoint global = this ->mapToGlobal(pt);
QMenu* pPopup = new QMenu(this);
QAction* pAction1 = new QAction("Item 1", this);
QAction* pAction2 = new QAction("Item 2", this);
pPopup ->addAction(pAction1);
pPopup ->addAction(pAction2);
QAction* pItem = pPopup ->exec(global);
if(pItem == pAction1)
{
}
else if(pItem == pAction2)
{
}
}
ここで、マウスの右ボタンを押すと、カーソルの位置にポップアップ メニューが表示されます。これが役立つことを願っています。
注: アクションが選択されたときにどのマウス ボタンが押されたかを検出する場合は、QMenu から独自のクラスを継承する必要があります。QMenu クラスにはmousePressEvent(QMouseEvent *event)
、オーバーライドする必要がある保護された関数が含まれており、メニューでアイテムが選択されたときにマウスの左ボタンまたは右ボタンが押されたかどうかを検出できます。