QT右键菜单
2016-02-17 10:09
357 查看
要在某一个窗体中添加右键菜单,比如在QTableView中添加,可以用两种方式。
方式1:使用它的signal函数customContextMenuRequested(QPoint pos),这个信号会在右键点击时发射,将这个信号连接到一个自定义的slot函数中,在这个函数中定义一个右键菜单QMenu,然后根据位置参数pos弹出这个菜单即可。
方式2:重写contextMenuEvent(QContextMenuEvent *event)事件函数,函数中同样使用QMenu来实现。
信号/槽机制是QT的一个中心特征,也是Qt与其他工具包的最不相同的部分,下面是方式1实现一个右键菜单,函数中代码同样适用于方式2:
方式1:使用它的signal函数customContextMenuRequested(QPoint pos),这个信号会在右键点击时发射,将这个信号连接到一个自定义的slot函数中,在这个函数中定义一个右键菜单QMenu,然后根据位置参数pos弹出这个菜单即可。
方式2:重写contextMenuEvent(QContextMenuEvent *event)事件函数,函数中同样使用QMenu来实现。
信号/槽机制是QT的一个中心特征,也是Qt与其他工具包的最不相同的部分,下面是方式1实现一个右键菜单,函数中代码同样适用于方式2:
void MainWindow::on_tableView_customContextMenuRequested(QPoint pos) { QTreeWidgetItem* curItem=ui->treeWidget->itemAt(pos); //获取当前被点击的节点 if(curItem==NULL)return; //这种情况是右键的位置不在treeItem的范围内,即在空白位置右击 if(0==curItem->data(0,Qt::UserRole))//data(...)返回的data已经在之前建立节点时用setdata()设置好 { QMenu *popMenu =new QMenu(this);//定义一个右键弹出菜单 popMenu->addAction(ui->action_newDB);//往菜单内添加QAction 该action在前面用设计器定义了 popMenu->addAction(ui->action_openDB); popMenu->addAction(ui->action_delDB); popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置 } else { QMenu *popMenu =new QMenu(this);//定义一个右键弹出菜单 popMenu->addAction(ui->action_newTable);//往菜单内添加QAction,该action在前面用设计器定义了 popMenu->addAction(ui->action_openTable); popMenu->addAction(ui->action_designTable); popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置 } }
相关文章推荐
- Qt中使用多线程
- Qt添加icon图标(主要用于treeview或tableview的item前)
- Qt右击菜单栏实现
- QT设置窗口屏幕居中
- PyQt4入门教程(2)_PyQt4的第一个程序
- Qt QTextEdit根据行号移动光标
- 使用Qt设计师实现对话框
- Qt4 使用QJson库
- PyQt4入门教程(1)_PyQt介绍及准备工作
- Qt之设置窗口背景
- PyQt4入门教程(0)_译者说
- Qt 中定义单例对象
- Qt应用程序打包
- Qt环境搭建
- Qt颜色选择编辑demo
- 使用QT实现右击菜单实例
- QT 登陆界面设计
- QT自动下载网页每天更新的文件
- 用Qt实现一个桌面弹幕程序(三)--实现一个弹幕②
- qtdeclarative 源码略读