QT--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; //当前选择的行号
小结
上述两种方法均可获取当前选择行号,读者可根据需要自行选择。
https://blog.csdn.net/weixin_39935783/article/details/111668635
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!