Qt TableView右键弹出菜单

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); !!!这里是重点!!!

CSDN QT大纲: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开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值