zoukankan      html  css  js  c++  java
  • Qt QTableWidge遍历删除行的问题

    Qt QTableWidge遍历删除行的问题

    @

    问题

    QTableWidget遍历删除时容易写成下面这种写法

    	for (int i = 0; i < ui->tableWidget_3->rowCount(); --i)
    	{
    		ui->tableWidget_3->removeRow(i);
    	}
    

    这种写法的问题:

    1. for循环的条件是i < 表行数,问题在于每次循环会移除一行,下次循环时表行数会减少,就会出现不能完全遍历的问题
    2. 循环体中每次循环会移除第i行,然而每次循环之后会移除前一行,那么后一行就会变成前一行,这样每次循环就变成了跳行移除

    解决办法

    1. 正确写法1
      1. 先获取表的总行数,做为循环条件,保持循环次数不变
      2. 每次循环时,只删除起始行,前一行移除后下一行会自动移到前一行
    	int rowCount = ui->tableWidget_3->rowCount();
    	int start = 0;
    	for (int i = start; i < rowCount; ++i)
    	{
    		ui->tableWidget_3->removeRow(start);
    	}
    
    1. 正确写法2
      1. 从后往前遍历,因为行号的索引是从0开始的,所以i的起始值为表的行数减1
      2. 每次移除第i行 ,也就是从最后一行开始移除
    	for (int i = ui->tableWidget_3->rowCount() - 1; i >= 0; --i)
    	{
    		ui->tableWidget_3->removeRow(i);
    	}
    

    其它

    当然,如果你想删除所有行的话可以直接调用QTableWidgetvoid QTableWidget::setRowCount(int rows)函数,将参数直接设置为0,QTableWidget将会直接丢弃所有行

    	ui->tableWidget_3->setRowCount(0);
    
    做一条有理想的咸鱼
  • 相关阅读:
    Linux命令行操作基础练习
    Linux基础系统优化
    神奇的二维码(觉得有点儿意思,转了~)
    django 中的cookie和session
    django 中间件操作
    django orm操作
    django 视图
    django 路由
    django(2) 模板
    django 模板(1)
  • 原文地址:https://www.cnblogs.com/Doyoung/p/14440617.html
Copyright © 2011-2022 走看看