您的位置:首页 > 其它

如何在 QWidget 窗口上弹出右键菜单

2014-03-11 13:17 330 查看
Title:

QWidget

窗口上弹出右键菜单的两个方法

Solution1:


给一个QWidget添加QActions,设置[b]QWidget的contextMenuPolicy属性为Qt::ActionsContextMenu值,使得窗口菜单以这些添加的QActions为菜单项组成一个右键菜单。[/b]

[code]
[code]MyWidget::MyWidget(QWidget*parent)

:QWidget(parent)

{

setWindowTitle(tr("ContextMenuShow1"));

//为窗口添加QActions

addAction(newQAction(tr("&Open"),this));

addAction(newQAction(QIcon(":/images/mark.png"),tr("&Mark"),this));

addAction(newQAction(tr("&Quit"),this));

//设置contextMenuPolicy属性值为'以Actions为弹出菜单的菜单项组成菜单'

setContextMenuPolicy(Qt::ActionsContextMenu);

}

[/code]
[/code]
[code]MyWidget::MyWidget(QWidget*parent)

:QWidget(parent)

{

setWindowTitle(tr("ContextMenuShow2"));

setContextMenuPolicy(Qt::DefaultContextMenu);//其实不用设置,默认就是这个值

}



voidMyWidget::contextMenuEvent(QContextMenuEvent*event)

{

QMenu*menu=newQMenu(this);

menu->addAction(newQAction(tr("&Open"),menu));

menu->addAction(newQAction(QIcon(":/images/mark.png"),tr("&Mark"),menu));

menu->addAction(newQAction(tr("&Quit"),menu));

menu->move(cursor().pos());//让菜单显示的位置在鼠标的坐标上

menu->show();

}

[/code]
[/code]
效果:






上面直接是在contextMenuEvent函数体里面new了个菜单和一些菜单项,这是为了演示。实际在写程序的过程中,我们往往会把这些QAction和QMenu声明为私有的成员变量,在构造Widget的时候,或者第一次调用contextMenuEvent时初始化它们,把它们的某些信号(signal)与其它组件的某些槽(slot)连接以处理一些事件,比如说单击上面演示的Open项目会弹出一个对话框,单击Quit会退出程序等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航