(四)Qt之右键菜单
2014-04-03 11:38
330 查看
1、右键菜单创建和显示
作为一种交互性强、使用方便的右键菜单在程序中是非常常用的,在Qt中可以轻松的实现。QMenu menu;
//添加菜单项,指定图标、名称、响应函数
menu.addAction(QIcon("1.png"), QStringLiteral("添加"),this,SLOT(OnBscGroupRightAction()));
//在鼠标位置显示
menu.exec(QCursor::pos());
2、右键菜单关联控件
QWidget及其子类都可有右键菜单,首先设置QWidget与右键菜单有关的函数setContextMenuPolicy(),属性对应项为contextmenuPolicy。setContextMenuPolicy函数的参数为枚举类型Qt::ContextMenuPolicy,qt帮助文档中有相应介绍:
a、Qt::DefaultContextMenu
默认是Qt::DefaultContextMenu,它是利用右键菜单事件contextMenuEvent()来处理(which means the contextMenuEvent() handler is called)。就是要重写contextMenuEvent( QContextMenuEvent * event )函数。你可以通过UI属性来设置:
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
QMenu Context;
Context.addAction(ui->actionAdd);
Context.exec(QCursor::pos());
}
b、Qt::CustomContextMenu
它是发出QWidget::customContextMenuRequested信号,注意仅仅只是发信号,意味着要自己写显示右键菜单的slot。这个信号是QWidget唯一与右键菜单有关的信号(也是自有的唯一信号),同时也是很容易被忽略的signal:
void customContextMenuRequested ( const QPoint & pos )
一般来说为了方便,我们会省略自己添加connect来关联槽函数,而是采用默认的槽函数,默认槽函数命名规则:void on_控件ID_customContextMenuRequested(const QPoint &pos);
void BscServer::on_treeView_customContextMenuRequested(const QPoint &pos)
{
QModelIndex index=ui.treeView->currentIndex();
QStandardItem *item = m_pMenuMgr->GetModel()->itemFromIndex(index);
CMenuItemData *data = dynamic_cast<CMenuItemData*>(item);
//根据右键类容显示菜单
ShowContextMenu(data);
}
c、Qt::ActionsContextMenu
该类型比较简单,直接使用QWidget::actions()函数添加动作即可,点击右键就会自动弹出菜单。
如对于QTableView控件,设置如下:
//添加右键菜
ui.tableView->addAction(ui.action_add);
ui.tableView->addAction(ui.action_del);
//右键处理事件
connect(ui.action_add, SIGNAL(triggered()), this, SLOT(addRecord()));
connect(ui.action_del, SIGNAL(triggered()), this, SLOT(delRecord()));
相关文章推荐
- Qt4另类使用教程(二)---Qt4 右键菜单 透明Widget 实例
- Qt之右键菜单实现
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
- Qt:QListWidget的item上实现右键菜单
- QT隐藏工具栏上的右键菜单
- QT 使用 Shockwave Flash Object 彻底屏蔽右键菜单
- QT右键菜单的创建及相关问题解决
- QT右键菜单及位置捕捉问题
- Qt实现右键快捷菜单
- Qt 中Treewidget添加右键菜单
- Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
- QT右键菜单、右键下拉菜单、各控件响应右键菜单方法简介(转)
- Qt之自定义菜单(右键菜单)
- qt 实现右键菜单
- Qt下重做右键菜单
- QT treewidget 右键菜单
- QT实现右键快捷菜单
- Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
- Qt:QListWidget的item上实现右键菜单
- Qt之密码框不可选中、复制、粘贴、无右键菜单等