先在界面上来个表格,在工具栏上增加两个工具按钮
QStandardItemModel * model = new QStandardItemModel(7, 4, this);for (int row = 0; row < 7; row++) {for (int column = 0; column < 4; column++) {QStandardItem * item = new QStandardItem(QString("%1").arg(row * 4 + column));model->setItem(row, column, item);}}_table_view = new QTableView;_table_view->setModel(model);setCentralWidget(_table_view);this->resize(800, 800);//获取视图的项目选择模型QItemSelectionModel * selection_model = _table_view->selectionModel();ui.mainToolBar->addAction(tr(u8"当前项目"), this, &QtWidgetsApplication7::getCurrentItemData);ui.mainToolBar->addAction(tr(u8"切换选择"), this, &QtWidgetsApplication7::toggleSelection);
接下来是实现这两个函数
void QtWidgetsApplication7::getCurrentItemData()
{auto currentData = _table_view->selectionModel()->currentIndex().data().toString();qDebug() << tr(u8"当前项目的内容") << currentData;
}void QtWidgetsApplication7::toggleSelection()
{//找到根节点下第0行0列的item的索引QModelIndex topLeft = _table_view->model()->index(0, 0, QModelIndex());//获取根节点下最大的行号auto max_row = _table_view->model()->rowCount(QModelIndex());//获取根节点下最大的列号auto max_column = _table_view->model()->columnCount(QModelIndex());//根据列号和行号获取最右下角的item的索引QModelIndex bottomRight = _table_view->model()->index(max_row - 1, max_column - 1, QModelIndex());//设置选择区域QItemSelection curSelection(topLeft, bottomRight);_table_view->selectionModel()->select(curSelection, QItemSelectionModel::Toggle);
}