[Qt] 在QTableWidget中添加右键菜单 [2013-06-17更新]

15 篇文章 0 订阅
- *.h
#include <QMenu>

QMenu *popMenu;
QAction *actSelect;
QAction *actUnselect;

- *.cpp
popMenu = new QMenu(ui->tw_DL_ConfTable);
actSelect = new QAction("选择", this);
actUnselect = new QAction("取消选择", this);
popMenu->addAction(actSelect);
popMenu->addAction(actUnselect);

connect(ui->tw_DL_ConfTable, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slot_DL_RcOnTw(QPoint)));
connect(actSelect, SIGNAL(triggered()), this, SLOT(slot_DL_ActSelect()));
connect(actUnselect, SIGNAL(triggered()), this, SLOT(slot_DL_ActUnselect()));

void MainWindow::slot_DL_RcOnTw(QPoint pos)
{
    popMenu->exec(QCursor::pos());
}

void MainWindow::slot_DL_ActSelect()
{
    ...
}

void MainWindow::slot_DL_ActUnselect()
{
    ...
}

要在QTableWidget实现右键菜单功能,可以使用QMenu和contextMenuEvent()事件。具体实现步骤如下: 1.创建QMenu对象并添加菜单项。 ```python menu = QMenu(self) menu.addAction("Copy") menu.addAction("Paste") ``` 2.在QTableWidget的contextMenuEvent()事件,设置菜单的位置,并显示菜单。 ```python def contextMenuEvent(self, event): menu = QMenu(self) menu.addAction("Copy") menu.addAction("Paste") if self.itemAt(event.pos()): menu.exec_(event.globalPos()) ``` 完整代码如下: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QMenu from PyQt5.QtCore import Qt class MainWindow(QMainWindow): def __init__(self): super().__init__() self.table = QTableWidget(self) self.table.setRowCount(4) self.table.setColumnCount(2) self.table.setHorizontalHeaderLabels(["Name", "Age"]) self.table.setItem(0, 0, QTableWidgetItem("Tom")) self.table.setItem(0, 1, QTableWidgetItem("20")) self.table.setItem(1, 0, QTableWidgetItem("Jerry")) self.table.setItem(1, 1, QTableWidgetItem("18")) self.table.setItem(2, 0, QTableWidgetItem("Lucy")) self.table.setItem(2, 1, QTableWidgetItem("22")) self.table.setItem(3, 0, QTableWidgetItem("John")) self.table.setItem(3, 1, QTableWidgetItem("25")) self.setCentralWidget(self.table) def contextMenuEvent(self, event): menu = QMenu(self) menu.addAction("Copy") menu.addAction("Paste") if self.table.itemAt(event.pos()): menu.exec_(event.globalPos()) if __name__ == "__main__": app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 这样就可以在QTableWidget实现右键菜单功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值