qt的QItemSelectionModel

先在界面上来个表格,在工具栏上增加两个工具按钮

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);
}
相关推荐
安然无虞2 分钟前
31天Python入门——第18天:面向对象三大特性·封装继承多态
开发语言·后端·爬虫·python
深鱼~24 分钟前
本地飞牛NAS快速部署WordPress个人网站并一键上线公网远程访问
java·开发语言
多多*28 分钟前
JVM Java类加载 isInstance instanceof 的区别
开发语言·python·spring·ai作画·eclipse·maven
安分小尧1 小时前
从树形数据中找路径:解密 getLevelIdAll 的递归魔法
开发语言·前端·javascript
啊阿狸不会拉杆1 小时前
第十九章:Python-pyttsx3 库实现文本转语音功能
开发语言·python·语音·pyttsx
馨谙1 小时前
里氏替换原则
java·开发语言·里氏替换原则
独好紫罗兰1 小时前
洛谷题单1-P1001 A+B Problem-python-流程图重构
开发语言·python·算法
你曾经是少年1 小时前
MyBatis-Plus 从入门到精通教学文档
java·开发语言·tomcat
wjs20241 小时前
R CSV 文件处理指南
开发语言
17´1 小时前
Qt从入门到入土(十一) -数据库操作--MySQL
数据库·c++·qt·mysql·sqlite