Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6929127
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T11:16:40+00:00 2026-05-27T11:16:40+00:00

I am using compare function to sort QList and MyClass has n different attribute(s)

  • 0

I am using compare function to sort QList
and MyClass has n different attribute(s) like address, age, firstname, lastname etc

SortKey is something like this.

typedef QPair<QString, Qt::SortOrder> SortKeyPair;         
//pair of attr name (i.e. gender and order of sorting asc|desc)


static bool compare( MyClass *o1, MyClass *o2)
{
    //sortKey is global static var.
    if (sortKey.second == Qt::AscendingOrder) {
        if (o1->dataField(sortKey.first) < o2->dataField(sortKey.first)) return true;
        else return false;
    } else {
        if (o1->dataField(sortKey.first) > o2->dataField(sortKey.first)) return true;
        else return false;
    }
    return false;
}

Sorting by single attr. works fine with qSort.
But I need list sorted with multiple attr. like ‘sort by lastname, then by age, then by gender’

I need a sort function to sort by multiple sortKey (which is not working !)

How can we sort with multiple sort keys?
Is there any data structure available that supports this ? (like map always keep things sorted according to key given)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T11:16:41+00:00Added an answer on May 27, 2026 at 11:16 am

    Just define your predicate in the logical way, using the major key for comparison and using the minor key as a fallback when the major is inconclusive:

    if (o1->dataField( firstSortKey ) < o2->dataField( firstSortKey ))
        return true;
    else if (o1->dataField( firstSortKey) > o2->dataField( firstSortKey ))
        return false;
    else if ( o1->dataField( secondSortKey ) < o2->dataField( secondSortKey ) )
        return true;
    else
        return false;
    

    or, for the general case:

    bool compare_on( int key_index, ...) {
      if (o1->dataField( key[key_index] ) < o2->dataField( key[key_index] ))
        return true;
      else if (o1->dataField( key[key_index] ) > o2->dataField( key[key_index] ))
        return false;
      else if ( key_index == max_key_index )
        return false;
      else
        return compare_on( key_index + 1 );
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have template function compare defined as below. #include<iostream> using namespace std; template<typename T>
I've got an application that's using string.compare(string,string) to sort some values. The thing I
I am using php function usort to sort an array. The custom php function
This is a simple bubble sort using a function pointer for ascending or descending.
I am writing a string compare function to sort medical terms that often contain
I hit a wall using std::sort(). I have a pure virtual class (named Compare
I have a function to sort a JSON object that looks like this: function
I have been using SQL Compare by Redgate at my company and was very
What would be the benefit of using decimal.compare vs. just using a > or
When I implement objects that I want to compare using the IEquatable<T> interface :

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.