QTableWidget获取行号

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;				//当前选择的行号

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值