先在界面上来个表格,在工具栏上增加两个工具按钮
cpp
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);
接下来是实现这两个函数
cpp
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);
}