ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

QTableWidget获取行号

2020-12-25 12:31:10  阅读:671  来源: 互联网

标签:nRow 获取 int QTableWidget ranges 行号 ui


QTableWidget获取当前所选择的行号

QTableWidget

在qtablewidget中获取当前选定行号的方法:
方法一:通过QList QTableWidget::SelectedRanges()获取当前选定的范围,然后根据所选范围的起止进行行号判断。
方法二:通过cellClicked(int,int)信号先获取当前鼠标点击单元格坐标,然后判断所在行号,该方法在设定表格每次选择一整行时,效果更好。
以下为部分核心代码:

ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);		//设置整行选择
ui.tableWidget->wetSelectionMode(QAbstractItemView::SingleSelection);		//设置只选择一行

QTableWidget::SelectedRanges()

QList<QTableWidgetSelectionRange> ranges = ui.tableWidget->selectedRanges();
if(ranges.count() == 0)
{
	qDebug() << QStringLiteral("请选择一行");
}
else
{
	for(int i  = 0; i < ranges.count(); i++)
	{
		int topRow=ranges.at(i).topRow();

       int bottomRow=ranges.at(i).bottomRow();

       for(int j = topRow; j <= bottomRow; j++)

       {
          qDebug()<<QstringLiteral("当前选择行号为:")<<j;
        }
	}
}

ranges四个参数

  1. topRow:所选区域的开始行号;
  2. bottomRow:所选区域的截止行号;
  3. left:所选区域的开始列号;
  4. right:所选区域的结束列号。

cellClicked(int,int)

头文件定义

signals:
			void  sendCurrentSelectedRow(int nRow);			//发送当前行号
private slots:
			void  onCilckTable(int nRow, int nCol);				//获取当前点击的单元格行、列号
			void onCurrentSelectedRow(int nRow);				//响应sendCurrentSelectedRow信号
private:
			int m_nCurrentSelectedRow;								//当前选择行号

实现

connect(ui.tableWidget, SIGNAL(cellClicked(int, int)), this, SLOT(onClickTable(int, int)));
connect(this, SIGNAL(sendCurrentSelectedRow(int)), this, SLOT(onCurrentSelectedRow(int)));

onCilckTable(int nRow, int nCol)槽函数

ui.tableWidget->setCurrentCell(nRow, QItemSelectionModel::Select);		//设置选择当前行
emit sendCurrentSelectedRow(nRow);

nCurrentSelectedRow(int nRow)槽函数

m_nCurrentSelectedRow = nRow;				//当前选择的行号

小结
上述两种方法均可获取当前选择行号,读者可根据需要自行选择。

标签:nRow,获取,int,QTableWidget,ranges,行号,ui
来源: https://blog.csdn.net/weixin_39935783/article/details/111668635

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有