QT控制tableWidget单选或多选

tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);  //设置为可以选中多个目标

 (参数含义:QAbstractItemView.NoSelection--不能选择

             QAbstractItemView.SingleSelection--选中单个目标

             QAbstractItemView.MultiSelection--选中多个目标

  QAbstractItemView.ExtendedSelection/QAbstractItemView.ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选)

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现多选菜单过滤功能,您可以对前面提到的示例代码进行一些修改。以下是一个示例代码,演示如何创建一个带有多选菜单过滤功能的 QTableWidget: ```cpp // 创建 QTableWidget QTableWidget* tableWidget = new QTableWidget(this); tableWidget->setRowCount(5); tableWidget->setColumnCount(3); // 添加数据 for (int row = 0; row < 5; ++row) { for (int col = 0; col < 3; ++col) { QTableWidgetItem* item = new QTableWidgetItem(QString("item %1,%2").arg(row).arg(col)); tableWidget->setItem(row, col, item); } } // 添加右键菜单 tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(tableWidget, &QTableWidget::customContextMenuRequested, this, [=](const QPoint& pos) { QMenu menu; QAction* filterAction = menu.addAction("Filter"); QAction* selectedAction = menu.exec(tableWidget->viewport()->mapToGlobal(pos)); if (selectedAction == filterAction) { // 获取选中行 QList<QTableWidgetItem*> selectedItems = tableWidget->selectedItems(); QList<int> selectedRows; for (auto item : selectedItems) { if (!selectedRows.contains(item->row())) { selectedRows.append(item->row()); } } // 过滤数据 for (int row = 0; row < tableWidget->rowCount(); ++row) { if (!selectedRows.contains(row)) { tableWidget->hideRow(row); } else { tableWidget->showRow(row); } } } }); ``` 此代码与前面的示例代码几乎相同,只是在过滤数据时添加了一个循环来显示选定的行。当用户单击“Filter”菜单项时,将获取选定的行并过滤数据,以仅显示选定的行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值