您的位置:首页 > 编程语言 > Qt开发

Qt创建右键菜单的方法

2013-08-20 17:29 465 查看
编写Qt界面程序的时候,经常会用到右键菜单(ContextMenu),目前自己知道的创建右键菜单的方法有两种,

方法1:在mousePressEvent事件中判断鼠标按下的是否是右键,进而调用创建右键菜单的函数。

void Dialog::mousePressEvent(QMouseEvent *event)//鼠标按下事件
{
if(event->button() == Qt::RightButton)
{
createContextMenu();
}
}
void Dialog::createContextMenu()//创建右键菜单函数
{
QCursor cur=this->cursor();

QMenu *contextMenu = new QMenu(this);
QAction *cutAction = new QAction(tr("&New"), this);
cutAction->setShortcut(QKeySequence::New);
QAction *copyAction = new QAction(tr("&Copy"), this);
copyAction->setShortcut(QKeySequence::Copy);
QAction *pasteAction = new QAction(tr("&Paste"), this);
pasteAction->setShortcut(QKeySequence::Paste);

contextMenu->addAction(cutAction);
contextMenu->addAction(copyAction);
contextMenu->addAction(pasteAction);

contextMenu->exec(cur.pos());
}


方法2:重新实现QWidget::contextMenuEvent()函数,

void Dialog::contextMenuEvent(QContextMenuEvent *event)//重写右键菜单
{
QCursor cur=this->cursor();

QMenu *contextMenu = new QMenu(this);
QAction *cutAction = new QAction(tr("&New"), this);
cutAction->setShortcut(QKeySequence::New);
QAction *copyAction = new QAction(tr("&Copy"), this);
copyAction->setShortcut(QKeySequence::Copy);
QAction *pasteAction = new QAction(tr("&Paste"), this);
pasteAction->setShortcut(QKeySequence::Paste);

contextMenu->addAction(cutAction);
contextMenu->addAction(copyAction);
contextMenu->addAction(pasteAction);
//setContextMenuPolicy(Qt::ActionsContextMenu);
contextMenu->exec(cur.pos());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: