2
votes

I have a QTableWidget and I want to sort the components of this table according to the values of the zero column, I used this code :

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

but it gives no good results, the image below shows you the problem I sought solution but found nothing, sorry I can't put all the code because it's very long. Image

3
I also used : ui->tableParticle->sortItems(0,Qt::AscendingOrder); and it does not work . - all.west
"* I can't put all the code because it's very long*" is exactly the reason you're encouraged to create a minimal reproducible example of your problem. I'd expect it to be around 10-20 lines. - Toby Speight

3 Answers

2
votes

By deafault QTableWidget sorts columns as ordinary strings. If you search for questions like "custom sorting in QTableWidget", you will find solutions to your answer, e.g.

  1. Custom sorting method of QTableView?

  2. Custom Sorting in QTableWidget

1
votes

I find also this answer add by SoloPilot, but i dont know how the pad the number strings with blanks and when I will add the line (' '+numStr)[-4:] :

The answer

One way that worked in my situation was

  1. before filling the table, turn off sorting:

table.setSortingEnabled(False)

  1. pad the number strings with blanks and make all strings in the column have the same length:

('    '+numStr)[-4:]

  1. after filling the table, turn on sorting:

table.setSortingEnabled(True)

This fixed the row sorting problem and the numerical order.

-1
votes

I add that before setItem and it's work :

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