建立QTreeWidget下QTreeWidgetItem的右键菜单
来源:互联网 发布:知乎必须注册吗 编辑:程序博客网 时间:2024/06/06 05:00
基本思路:
这里要考虑的问题有两个,一个是QTreeWidgetItem的右键功能,一个是确认点击右键之后实现菜单功能。关于QTreeWidgetItem下右键的功能的实现,使用QTreeWidgetItem信号,然后判断是否按下的为鼠标右键。关于菜单功能的实现,则是创建一个QMenu对象,然后将要实现的菜单功能包装到QAction对应的槽函数中。
下面以一个简单的Qt Widgets Application工程为例说明具体实现:
mainwindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QTreeWidgetItem>#include <QAction>#include <QMenu>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private: Ui::MainWindow *ui; QAction * test; //自定义的QActionprivate slots: void testSlot(); //与QAction想关联的槽函数 void itemPressedSlot(QTreeWidgetItem *, int); //用来判断是否是鼠标右键按下的槽函数};#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QAction>#include <QDebug>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); test = new QAction("test", ui->treeWidget); //因为是在QTreeWidget内实现右键,所以以其作为父类 connect(ui->treeWidget, SIGNAL(itemPressed(QTreeWidgetItem*,int)), this, SLOT(itemPressedSlot(QTreeWidgetItem*,int))); connect(test, SIGNAL(triggered(bool)), this , SLOT(testSlot()));}MainWindow::~MainWindow(){ delete ui;}void MainWindow::testSlot(){ qDebug() << "Hello, Action";}void MainWindow::itemPressedSlot(QTreeWidgetItem * pressedItem, int column){ if(qApp->mouseButtons() == Qt::RightButton) //判断是否为右键 { QMenu*menu = new QMenu(ui->treeWidget); if (pressedItem->text(column) == "A") //在我的QTreeWidget对象中,有三个QTreeWidgetItem对象,其中有一个内容为“A” { menu->addAction(test); menu->exec(QCursor::pos()); //菜单弹出位置为鼠标点击位置 } }}
这里不要使用下面的方法实现右键功能
if(qApp->mouseButtons() == Qt::RightButton) { ui->treeWidget->addAction(test); ui->treeWidget->setContextMenuPolicy(Qt::ActionsContextMenu); }这样实现的是整个QTreeWidget对象上的右键功能,而不是一个QTreeWidgetItem下的右键功能。
0 0
- 建立QTreeWidget下QTreeWidgetItem的右键菜单
- Qt程序学习(三)------QTreeWidget、右键菜单、动态改变comboBox、QTreeWidgetItem的对应列的文字编辑
- 在QTreeWidget中使得QTreeWidgetItem接受右键出现菜单,部分代码
- QTreeWidget 添加右键菜单
- QTreeWidget右键菜单
- QTreeWidget中添加右键菜单
- Qt QtreeWidget树形控件右键菜单
- 给QTreeWidget添加右键菜单功能
- QT Qtreewidget操作 右键菜单响应等
- QTreeWidget 与 QTreeWidgetItem 【百度空间】
- QTreeWidget 和QTreeWidgetItem用法总结
- QTreeWidget 和QTreeWidgetItem用法总结
- QTreeWidget 和QTreeWidgetItem用法总结
- 用yui建立简单的右键菜单
- 在win7 下, 给peid 建立右键关联菜单
- QTreeWidget (两层)点击右键菜单删除节点
- Opera下自定义右键菜单的研究
- Opera下自定义右键菜单的研究
- WebView的用法
- window.postMessage解决前端ajax跨域问题
- Android NDK调试出错Unknown Application ABI, Unable to detect application ABI's的解决方案
- 并查集算法学习(转)
- Codeforces 711 E. ZS and The Birthday Paradox(数学)——Codeforces Round #369 (Div. 2)
- 建立QTreeWidget下QTreeWidgetItem的右键菜单
- 动态链接库.so
- java中几种集合类型的区分
- spring security 自定义 openid
- JavaScript进阶篇
- HBase协处理器实战
- JAVA数据结构之集合
- activity 管理fragment的UI内容
- Retrofit2.0中注解使用套路