QTableView 获取选择的行

1.概要

2.内容

在使用 Qt 的 QTableView 时,你可能需要获取用户选择的行。这可以通过 QItemSelectionModel 类来实现,该类管理选择的状态。下面是一个简单的示例,展示了如何在 C++ 中获取 QTableView 中用户选择的行。

假设你有一个 QTableView 对象 tableView,你可以按照以下步骤获取选择的行:

  1. 获取 QTableView 的选择模型。
  2. 使用选择模型的方法来获取选择的行。

以下是一个示例代码:

#include <QApplication>  
#include <QTableView>  
#include <QStandardItemModel>  
#include <QItemSelectionModel>  
#include <QModelIndex>  
#include <QDebug>  
  
int main(int argc, char *argv[])  
{  
    QApplication app(argc, argv);  
  
    // 创建一个标准的项模型  
    QStandardItemModel model(5, 3); // 5 行 3 列  
    for (int row = 0; row < 5; ++row) {  
        for (int column = 0; column < 3; ++column) {  
            QModelIndex index = model.index(row, column, QModelIndex());  
            model.setData(index, QVariant((row+1) * (column+1)));  
        }  
    }  
  
    // 创建一个 QTableView  
    QTableView tableView;  
    tableView.setModel(&model);  
    tableView.show();  
  
    // 获取选择模型  
    QItemSelectionModel *selectionModel = tableView.selectionModel();  
  
    // 连接选择改变信号到槽函数  
    QObject::connect(selectionModel, &QItemSelectionModel::selectionChanged, [&]() {  
        // 获取所有选择的行  
        QModelIndexList selectedRows = selectionModel->selectedRows();  
          
        // 打印选择的行  
        qDebug() << "Selected rows:";  
        for (const QModelIndex &index : selectedRows) {  
            qDebug() << "Row:" << index.row();  
        }  
    });  
  
    return app.exec();  
}

运行效果

Selected rows:
Row: 1
Selected rows:
Row: 2
Selected rows:
Row: 3
Selected rows:

视频效果

QTableView获取选中的行

在这个示例中,我们创建了一个 QStandardItemModel 并填充了一些数据,然后将该模型设置为 QTableView 的模型。我们获取了 QTableView 的选择模型,并连接了选择改变信号(selectionChanged)到一个 Lambda 函数。

每当选择发生变化时,Lambda 函数就会执行,获取所有选择的行,并打印这些行的行号。

关键方法:

  • QItemSelectionModel::selectedRows(int column = -1):返回指定列中所有选择的行的模型索引列表。如果列参数为 -1,则返回所有列中的选择行。

通过这种方式,你可以轻松地获取 QTableView 中用户选择的行,并进行相应的处理。

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/143448538