Qt532.【转】Qt创建鼠标右键菜单

时间:2023-03-09 14:40:29
Qt532.【转】Qt创建鼠标右键菜单

ZC:可以通过 设置  (QWebView*)->setContextMenuPolicy(NoContextMenu); 来关闭 QWebView的默认右键菜单

Qt创建鼠标右键菜单_疯华正茂_新浪博客.html(http://blog.sina.com.cn/s/blog_63d0ff2d0102vetz.html

网页内容保存:

第一步:

QWidget及其子类都可有右键菜单,首先设置QWidget与右键菜单有关的函数setContextMenuPolicy()。

如设置QTreeView的相关函数为:this->ui.treeView->setContextMenuPolicy(Qt::CustomContextMenu);

Qt::ContextMenuPolicy枚举类型包括:Qt::DefaultContextMenu, Qt::NoContextMenu, Qt::PreventContextMenu, Qt::ActionsContextMenu, and Qt::CustomContextMenu,其中如果设置该类型为Qt::CustomContextMenu,则点击鼠标右键会发射信号customContextMenuRequested(const QPoint)。

第二步:

在头文件中声明右键关联的槽函数ShowMouseRightButton(const QPoint); 并且设置信号customContextMenuRequested(const QPoint)与该槽函数的关联,例如:connect(ui.treeView, SIGNAL(customContextMenuRequested(const QPoint)), this, SLOT(ShowMouseRightButton(const QPoint)));

第三步:

实现对应的右键关联的槽函数,如ShowMouseRightButton(const QPoint);

void ShowMouseRightButton(const QPoint& pos)
{
       QMenu *qMenu = NULL;

if (qMenu)
       {
               delete qMenu;
               qMenu = NULL;
       }

qMenu = new QMenu(ui.treeView);

QAction* closePaneAction = new QAction("&Close",this);
       connect(closePaneAction, SIGNAL(triggered()), this, SLOT(close()));

QAction* addTreeItemAction = new QAction("&AddItem", this);
       connect(addTreeItemAction, SIGNAL(triggered()), this, SLOT(AddTreeItem()));

qMenu->addAction(closePaneAction);
       qMenu->addAction(addTreeItemAction);

qMenu->exec(QCursor::pos()); //在鼠标点击的位置显示鼠标右键菜单

}

Z