Qt在QTableWidgetView等表格中添加右击菜单

Posted 林夕07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt在QTableWidgetView等表格中添加右击菜单相关的知识,希望对你有一定的参考价值。

先来看效果图,鼠标点在哪里菜单显示在哪里。

实现代码

在构造函数中设置右击菜单。并关联右击的槽函数。

ui.tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);//设置右击菜单
connect(ui.tableWidget, &QTableWidget::customContextMenuRequested, this, &QtTableWidgetMenu::onShowMenu);

再根据右击的pos位置,判断点击的QTableWidget位置中是否有Item。如下图空白这种情况,需要过滤掉。

void QtTableWidgetMenu::onShowMenu(QPoint pos)

	QTableWidgetItem* selectedItem = ui.tableWidget->itemAt(pos); //获取右击的item
	if (nullptr == selectedItem)
	
		return;
	

	QMenu* menu = new QMenu(this);//创建菜单
	QAction* action = new QAction(u8"查看详细资料", this);//创建一个action

	menu->addAction(action);//将action放入菜单中

	menu->popup(ui.tableWidget->viewport()->mapToGlobal(pos));//将菜单显示到鼠标所在位置

以上是关于Qt在QTableWidgetView等表格中添加右击菜单的主要内容,如果未能解决你的问题,请参考以下文章

Qt实现在表格中添加气泡显示功能

在 Qt 创建器中向表视图添加仅可读行

Qt QTableView 表格内添加控件

Qt 添加表格小部件项目的问题

Qt 表格小部件垂直和水平标题变得不可见

Qt实现表格控件-支持多级列表头多级行表头单元格合并字体设置等