QT实现鼠标右键快捷菜单(QTableWidget)

对于右键点击事件,这里用到的是Qt::CustomContextMenu方法,本例通过右点QTableWidget,显示下拉菜单,同时获得点击的行号。
ui界面如下图:
这里写图片描述
//customContextMenuRequested(QPoint)信号是QWidget中唯一右键菜单点击的信号,该信号发出的条件是:widget的ContextMenuPolicy必须是Qt::CustomContextMenu,此时右键点击就会发出此信号。

ui->tableWidget->setContextMenuPolicy (Qt::CustomContextMenu);
connect(ui->tableWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(show_menu(QPoint)));
void Widget::show_menu(const QPoint pos)
{
	//设置菜单选项
    QMenu *menu = new QMenu(ui->tableWidget);
    QAction *pnew = new QAction("第一项",ui->tableWidget);
    QAction *pnew1 = new QAction("第二项",ui->tableWidget);
    connect (pnew,SIGNAL(triggered()),this,SLOT(clickgoose()));
    connect (pnew1,SIGNAL(triggered()),this,SLOT(clickmms()));
    menu->addAction(pnew);
    menu->addAction(pnew1);
    menu->move (cursor ().pos ());
    menu->show ();
    //获得鼠标点击的x,y坐标点
    int x = pos.x ();
    int y = pos.y ();
    QModelIndex index = ui->tableWidget->indexAt (QPoint(x,y));
    int row  = index.row ();//获得QTableWidget列表点击的行数
}

结尾

只为记录,只为分享! 愿所写能对你有所帮助。不忘记点个赞,谢谢~

  • 16
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
QTableWidget 右键菜单实现可以通过以下步骤来完成: 1. 创建一个自定义的 QMenu 对象,将需要添加的菜单项添加到该对象中。 2. 在 QTableWidget 上设置一个右键菜单事件过滤器,用于捕获右键菜单事件。 3. 在事件过滤器中判断是否为右键菜单事件,如果是则在鼠标坐标处弹出自定义的 QMenu。 以下是一个简单的示例代码: ```python from PyQt5.QtWidgets import QMenu, QTableWidget, QTableWidgetItem, QWidget, QVBoxLayout, QApplication from PyQt5.QtCore import Qt class MyTable(QWidget): def __init__(self): super().__init__() # 创建表格 self.table = QTableWidget(4, 4, self) self.table.setHorizontalHeaderLabels(['Name', 'Age', 'Gender', 'Country']) self.table.setVerticalHeaderLabels(['Row 1', 'Row 2', 'Row 3', 'Row 4']) # 设置右键菜单事件过滤器 self.table.setContextMenuPolicy(Qt.CustomContextMenu) self.table.customContextMenuRequested.connect(self.show_menu) # 创建自定义菜单 self.menu = QMenu(self) self.menu.addAction('Action 1') self.menu.addAction('Action 2') self.menu.addAction('Action 3') # 设置布局 layout = QVBoxLayout(self) layout.addWidget(self.table) def show_menu(self, pos): # 在鼠标坐标处弹出菜单 self.menu.exec_(self.table.mapToGlobal(pos)) if __name__ == '__main__': app = QApplication([]) window = MyTable() window.show() app.exec_() ``` 在上面的示例代码中,我们创建了一个 QTableWidget,设置了一个右键菜单事件过滤器,并在事件过滤器中弹出了一个自定义的 QMenu。你可以根据自己的需要修改菜单项的名称和功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值