按列对QTableWidget进行排序

时间:2016-06-19 13:45:31

标签: c++ qt qtablewidget

我有一个QTableWidget,我想根据零列的值对该表的组件进行排序,我使用了这段代码:

ui->tableParticle->sortByColumn(0,Qt::AscendingOrder);

但它没有给出好的结果,下面的图片显示了我寻求解决方案但没有发现任何问题,抱歉我不能把所有代码都放在一边,因为它很长。 Image

3 个答案:

答案 0 :(得分:1)

通过deafault QTableWidget将列排序为普通字符串。如果您搜索“QTableWidget中的自定义排序”等问题,您将找到答案的解决方案,例如:

  1. Custom sorting method of QTableView?

  2. Custom Sorting in QTableWidget

答案 1 :(得分:0)

我也发现这个答案是由 SoloPilot 添加的,但我不知道如何填充数字字符串与空白以及何时添加行(''+ numStr)[ - 4:]:

答案

在我的情况下有效的方法是

  1. 在填写表格之前,请关闭排序:
  2. table.setSortingEnabled(False)
    
    1. 用空格填充数字字符串,并使列中的所有字符串具有相同的长度:
    2. ('    '+numStr)[-4:]
      
      1. 填写表格后,打开排序:
      2. table.setSortingEnabled(True)
        

        这解决了行排序问题和数字顺序。

答案 2 :(得分:0)

我在setItem和它的工作之前添加了它:

ui->table->horizontalHeader()->sortIndicatorOrder();