QTableView右键显示菜单

1.信号槽连接

ui.tableView->setContextMenuPolicy(Qt::CustomContextMenu);//右键菜单
connect(ui.tableView, &QTableView::customContextMenuRequested, this, &CShowInterpretWidget::slotShowMenu);

2.槽函数

void CShowInterpretWidget::slotShowMenu(const QPoint &pos)
{
	// 获取右键时 Qtableview 中的项
	QModelIndex t_index = ui.tableView->indexAt(pos);

	if (t_index.isValid())
	{
		m_cwName = t_index.data().toString();
		Q_UNUSED(pos);
		m_mainMenu = new QMenu(this);
		m_mainMenu->addAction(QString::fromLocal8Bit("修改信息"));
		m_mainMenu->addSeparator();
		m_mainMenu->addAction(QString::fromLocal8Bit("隐藏"));
		m_mainMenu->addSeparator();
		m_mainMenu->addAction(QString::fromLocal8Bit("显示"));
		m_mainMenu->addSeparator();
		m_mainMenu->addAction(QString::fromLocal8Bit("删除"));
		connect(m_mainMenu, SIGNAL(triggered(QAction*)), this, SLOT(slotShowModifyWind(QAction*)));//这行代码似乎只能放在exec前面。这里是菜单的里面的信号槽
		m_mainMenu->exec(QCursor::pos());
	}

}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于QTableView,可以通过使用QMenu和QAction来实现右键菜单。以下是一个简单的示例代码: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QMenu, QAction, QMessageBox from PyQt5.QtCore import Qt class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("QTableView右键菜单示例") # 创建QTableView self.table_view = QTableView(self) self.setCentralWidget(self.table_view) # 创建右键菜单 self.context_menu = QMenu(self.table_view) self.delete_action = QAction("删除", self) self.context_menu.addAction(self.delete_action) # 绑定右键菜单信号 self.table_view.setContextMenuPolicy(Qt.CustomContextMenu) self.table_view.customContextMenuRequested.connect(self.show_context_menu) # 绑定删除动作的槽函数 self.delete_action.triggered.connect(self.delete_row) def show_context_menu(self, pos): # 显示右键菜单 global_pos = self.table_view.mapToGlobal(pos) self.context_menu.exec_(global_pos) def delete_row(self): # 获取当前选中的行 selected_row = self.table_view.currentIndex().row() if selected_row >= 0: # 在这里编写删除行的代码 QMessageBox.information(self, "提示", "删除行:" + str(selected_row)) if __name__ == "__main__": app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 这个例子创建了一个带有QTableView的主窗口,并在QTableView上实现了一个右键菜单右键菜单有一个"删除"动作,当用户选择该动作时,会弹出一个消息框显示删除的行号。 你可以根据实际需求修改和扩展这个示例代码,来满足你的具体需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值