网站首页 > 技术文章 正文
TableView右键弹出菜单
关于TableView的控件使用,这里不做解释了,直接说诉求,右键点击选中的某一行(术语称item),弹出菜单。操作结果如下图:
实现过程主要包括以下几个重点:
1、初始化一个TableView控件表
主要需要完成表头的设置,表格属性的设置。
代码如下:
point_time_model 表示TableView控件对应的model:
point_time_model = new QStandardItemModel(ui->Point_Time_tableView);
初始化:
const int table_cols = 3; //有几列
QStringList headerList;
headerList << "位置" << "监测时长" << " " ;
point_time_model->setHorizontalHeaderLabels(headerList);
point_time_model->setColumnCount(table_cols);
//设置列表属性
ui->Point_Time_tableView->verticalHeader()->setVisible(false); //隐藏列表头
ui->Point_Time_tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选择整行
ui->Point_Time_tableView->setSelectionMode(QAbstractItemView::SingleSelection); //只选择一行
ui->Point_Time_tableView->horizontalHeader()->setStretchLastSection(true); //最后一列填满表
ui->Point_Time_tableView->setContextMenuPolicy(Qt::CustomContextMenu); //可弹出右键菜单
其中,ui->Point_Time_tableView->setContextMenuPolicy(Qt::CustomContextMenu); !!!这里是重点!!!
【领QT开发教程学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
点击→领取「链接」
2 、为TableView控件表添加右键菜单
首先需要创建一个菜单,并为菜单添加行为,代码如下:
.cpp文件中
QMenu *popMenu; //菜单
popMenu = new QMenu(ui->Point_Time_tableView);
QAction *actionUpdateInfo = new QAction();
QAction *actionDelInfo = new QAction();
actionUpdateInfo ->setText(QString("修改"));
actionDelInfo ->setText(QString("删除"));
popMenu->addAction(actionUpdateInfo);
popMenu->addAction(actionDelInfo);
到这里,右键菜单已经建立好了,接下来的关键步骤是,如何右键点击一行,弹出该菜单,需要用到槽和信号机制。
3 、右键弹出菜单的槽和信号机制
.h文件中
1 private slots:
2 //右键菜单响应函数
3 void slotContextMenu(QPoint pos);
.cpp文件中,在第2步的代码之后初始化槽信号的connect函数:
connect(ui->Point_Time_tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
(1)该连接函数中的SIGNAL(customContextMenuRequested(QPoint))是QMenu的自带响应信号。
(2)SLOT(slotContextMenu(QPoint)))中的槽函数需要自己实现,代码如下:
void MainWindow::slotContextMenu(QPoint pos)
{
auto index = ui->Point_Time_tableView->indexAt(pos);
if (index.isValid())
{
popMenu->exec(QCursor::pos()); // 菜单出现的位置为当前鼠标的位置
}
}
以上,右键点击某一行时,菜单就会出现,相应的每一个菜单需要什么样的响应操作,就是后续的槽和信号之间的操作。
- 上一篇: Qt mvc框架架构图 qt开发框架 gui
- 下一篇: Qt之自定义检索框 qt 关键字检索
猜你喜欢
- 2024-10-20 Qt 开发经验总结 qt软件开发
- 2024-10-20 Qt QTableWidget用法总结 qtablewidget qtableview
- 2024-10-20 实战PyQt5: 068-MV框架中的项视图部件
- 2024-10-20 Qt开发经验小技巧231-235 qt开发入门简介
- 2024-10-20 Python+PyQt5进阶(5) pyqt5 django
- 2024-10-20 Qt项目升级到Qt6经验总结 qt更新界面
- 2024-10-20 QTableWidget表格中增删数据 qtablewidget清空表格
- 2024-10-20 C/C++ Qt StatusBar 底部状态栏应用
- 2024-10-20 Qt的常用控件 qt控件详解
- 2024-10-20 Python PyQt5通过QTableWidget表格控件操作SQLite数据库
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)