1. 程式人生 > >Qt之qSort

Qt之qSort

http://blog.sina.com.cn/s/blog_a6fb6cc90102v617.html

Qt中可以使用qSort可以對容器排序,助手中有很多示例,大多數關於int、QString的排序,今天這裡主要講解qSort如何對結構體進行排序的。

Qt對整形排序:
QList list;
list << 33 << 12 << 68 << 6 << 12;
qSort(list.begin(), list.end());
// list: [ 6, 12, 12, 33, 68 ]
Qt對字串排序:
bool caseInsensitiveLessThan(const QString &s1, const QString &s2)
{
    return s1.toLower() < s2.toLower();
}

int doSomething()
{
    QStringList list;
    list << "AlPha" << "beTA" << "gamma" << "DELTA";
    qSort(list.begin(), list.end(), caseInsensitiveLessThan);
    // list: [ "AlPha", "beTA", "DELTA", "gamma" ]
}
Qt對結構體排序:
struct BarAmount
{
    int barLevel;  //鋼筋級別
    QString diameter;  //鋼筋直徑
    double planAmount;  //計劃量
    double purchaseAmount;  //採購量
    double amount;  //總量
};
結構體如上所示, 對QList barDataList可通過以下方式進行排序!
void OverdraftControl::sortBarData(QList *barDataList)
{
    qSort(barDataList->begin(), barDataList->end(), compareBarData);
}
bool compareBarData(const BarAmount &barAmount1, const BarAmount &barAmount2)
{
    if (barAmount1.barLevel < barAmount2.barLevel)
    {
        return true;
    }
    else if (barAmount1.barLevel > barAmount2.barLevel)
    {
        return false;
    }
    else
    {
        QString strDiameter1 = barAmount1.diameter;
        QString strDiameter2 = barAmount2.diameter;
        int nCompare = compareDiameterDescription(strDiameter1,strDiameter2);
        if (nCompare == -1)
        {
            return true;
        }
        else if (nCompare == 1)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}
直接呼叫sortBarData(&barDataList)就可以完成對QListbarDataList的排序了!

相關推薦

QtqSort

http://blog.sina.com.cn/s/blog_a6fb6cc90102v617.html Qt中可以使用qSort可以對容器排序,助手中有很多示例,大多數關於int、QString的排序,今天這裡主要講解qSort如何對結構體進行排序的。 Qt對整形排序

Qt自定義搜索框——QLineEdit裏增加一個Layout,還不影響正常輸入文字(好像是一種比較通吃的方法)

too 步驟 set box 文本 csdn sub void 鼠標 簡述 關於搜索框,大家都經常接觸。例如:瀏覽器搜索、Windows資源管理器搜索等。 當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。 方案一:調用QLineEdit現

Qt入門實踐】Qt哲學家問題(linux 多線程)

avi .cpp private 1=1 endif debug 問題 tel pub 轉載請註明出處:http://blog.csdn.net/feng1790291543 linux多線程實現哲學家問題,依據哲學家吃飯、拿筷子、放下筷子...... 首先,主

Qt qwt 和 qwtpolar

shu fix style file ins nmake con http com 1 qwt 1.1 下載  qwt-6.1.3 版本下載地址: https://sourceforge.net/projects/qwt/files/qwt/ 1.2 解壓

Qtzip壓縮/解壓縮(QuaZIP)

com spm c++ ews pen 更多 pri cat markdown 摘要: 簡述 QuaZIP是使用Qt/C++對ZLIB進行簡單封裝的用於壓縮及解壓縮ZIP的開源庫。適用於多種平臺,利用它可以很方便的將單個或多個文件打包為zip文件,且打包後的zip文件可

QT設計部件背景色

ack 主界面 disable tracking avi blue line popu 基本 一、使用QT樣式表設計部件外觀 樣式表使用文本描寫敘述,能夠使用QApplication::setStyleSheet()函數將其設置到整個應用程序上。也能夠使用QWid

Qt 重復連接信號槽

style ref 重復 rtk doc svg cap http wls 059E2聘853F鉸http://t.docin.com/cufx6020 謔H戳桃桓51A判8w0芯http://t.docin.com/roj681 橙B3em刺灘姑0競eu奧0http:

QT初體驗1:如何學習QT個人淺見,以及如何讀取文本文件,在調試信息中輸出。

沒有 c++教程 最簡 將不 ror 聽說 講解 知識點 括號 2017年11月初,隨著工作崗位的調動,我轉到了研發崗,開始了漫漫程序員的成長之路。首先介紹下個人知識儲備,大一學習過C語言,沒有工程經驗,所學是為了期末考試+2級考試,考完在大學+碩士期間沒有用到編程。 來到

QTQSignalMapper(可以理解為轉發器,多個按鈕綁定到一個Edit上,且能分辨。每個單獨連接的話,反而麻煩)

this 不同的 lan each b2c etc gpo 知識點 span QT之QSignalMapper QT之QSignalMapper 簡述 效果圖 上代碼 相關知識點文章 結尾 簡述 QSign

QT圓形頭像(使用PNG的Mask達到的效果)

led asp mage gravity details fill text sca ima 廢話不多說!直接上代碼。 我們在很多UI設計應用中,需要用到自定義形狀頭像,在這裏,我對圓形頭像的設計做簡單的闡述,其它形狀頭像可參考本文做相應的更改即可。如下圖所

QtQEvent(所有事件的翻譯)

sin ini 隊列 方便 erp 拖放 sdn 所有 area QEvent 類是所有事件類的基類,事件對象包含事件參數。 Qt 的主事件循環(QCoreApplication::exec())從事件隊列中獲取本地窗口系統事件,將它們轉化為 QEvents,然後將轉換後

QtQLabel

不同顏色 map() int ble code 關於 sheet 畫的 fun 簡述 QLabel提供了一個文本或圖像的顯示,沒有提供用戶交互功能。 一個QLab

QT窗口部件及窗口類型

QT 窗口組件 窗口類型 今天我們來繼續學習QT的相關知識,本文的內容是介紹QT的窗口部件及窗口類型。 先說下窗口組件,圖形用戶界面由不同的窗口和窗口組件構成,一般是在<QtGui>中包含,對應Qt中的GUI模塊;Qt以組件對象的方式構建圖形用戶界面;組件的類型分為兩種:1、容器類(父

QT坐標系統

QT 坐標系統 GUI操作系統都有其特定的坐標系統;我們本節要在坐標系統中進行窗口和部件的定位,定位類型分為3種: 1、頂級窗口部件的定位 2、窗口內部件的定位 3、窗口部件的大小設置 Qt 使用同一的坐標系統定位窗口部件的位置和大小;Qt 部件類提供成員函數在坐標系統中進行定

QT創建計算器

QT 計算器 界面 上篇博客說我們要創建一個計算器,那麽下面我們來創建一個計算器的界面,這節只是簡單的開發一個計算器的界面。實現的是一個文本框只能顯示,不能輸入的,界面大小固定的計算器。那麽在開發之前,我們的的QT知識還有所欠缺,對於文本框的顯示,我們沒有相關的知識,我們就先學習下 QLineEd

QT計算器代碼重構

QT 代碼重構 首先我們來講講為什麽要進行代碼重構?在一些大的項目中,代碼重構是一個必不可少的步驟。因為項目大了,代碼也就多了,後期的維護將會很難,所以我們要適當的進行代碼重構,讓代碼的可復用性提高,使軟件的設計和架構更加合理。 代碼實現和代碼重構有什麽不同呢?代碼實現的重點是功能的實現,而代碼重構則

QT消息處理

QT 信號 槽 那麽我們之前學習了計算器的界面制作,但是只是實現了一個計算器的界面,還不具有計算器的功能。 接下來我們就要學習在QT中如何進行消息的處理,比如你按下1鍵之後,QT會如何處理這個信號。QT封裝了具體操作系統的消息機制,同時它遵循經典的 GUI 消息驅動事件模型。QT中定義了與系統消息

QT字符串類

QT 字符串 前面我們講解了開發計算器的信號處理機制,接下來我們來講講關於字符串顯示的問題。 我們都知道 C 語言不支持真正意義上的字符串;C 語言是用字符數組和一組函數來實現字符串操作的;C 語言不支持自定義類型,因此我們無法獲得字符串類型。從 C 到 C++ 的進化過程引入了自定義類型,

QT計算器對四則運算表達式的解析

QT 計算器 解析算法 前面我們已經關於計算器介紹的已經夠多了,那麽它現在還是沒有具備計算的功能。 今天我們來繼續講解計算器的解析算法,那麽對於一個四則運算表達式, 它是如何讀懂的呢?比如:“+9.11 + ( -3 - 1 ) * -5 ”; 人類習慣的數學表達式叫做中綴表達式,還有一種將運

QT計算器核心解析算法

QT 解析算法 上節我們說到計算機默認的是後綴表達式,那麽中綴表達式轉後綴表達式的過程就類似於編譯過程。 必須得註意這麽幾個問題:四則運算表達式中的括號必須匹配;根據運算符優先級進行轉換;轉換後的表達式中沒有括號;轉換後可以順序計算出最終結果。下來我們就講下具體的轉換過程:1、當前元素 e 為