qt tablewidget右键弹出菜单 c++事例
时间: 2023-08-26 11:06:49 浏览: 109
下面是一个简单的示例,演示如何使用Qt中的QTableWidget和QMenu来创建右键菜单:
```c++
#include <QApplication>
#include <QTableWidget>
#include <QMenu>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建一个QTableWidget
QTableWidget tableWidget;
tableWidget.setRowCount(5);
tableWidget.setColumnCount(3);
// 设置表格数据
for (int row = 0; row < tableWidget.rowCount(); ++row) {
for (int col = 0; col < tableWidget.columnCount(); ++col) {
tableWidget.setItem(row, col, new QTableWidgetItem(QString("Item %1-%2").arg(row).arg(col)));
}
}
// 创建右键菜单
QMenu menu(&tableWidget);
QAction action("删除", &menu);
connect(&action, &QAction::triggered, [&]() {
// 获取选中的单元格
QList<QTableWidgetItem *> items = tableWidget.selectedItems();
for (QTableWidgetItem *item : items) {
tableWidget.removeRow(item->row());
}
});
menu.addAction(&action);
// 在单元格上右键,则弹出菜单
tableWidget.setContextMenuPolicy(Qt::CustomContextMenu);
QObject::connect(&tableWidget, &QTableWidget::customContextMenuRequested, [&](const QPoint &pos) {
menu.exec(tableWidget.viewport()->mapToGlobal(pos));
});
tableWidget.show();
return app.exec();
}
```
这个例子创建一个5行3列的QTableWidget,并且为每个单元格设置了数据。当用户在一个单元格上右键时,将弹出一个菜单,其中包含一个“删除”选项。当用户选择“删除”时,将从表中删除选定的行。
阅读全文