程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> qt-QComboBox 中三級聯動設置省市區

qt-QComboBox 中三級聯動設置省市區

編輯:編程解疑
QComboBox 中三級聯動設置省市區

圖片說明
QComboBox 中三級聯動設置省市區 我有一個txt文件裡有各省市區的數據如圖 但是我怎麼去提取這些數據呢

最佳回答:


/*

  • 以下是思路,代碼未測試,酌情參考 *
  • 可見序號是唯一,一個城市對應一個序號
  • 用一個QMap存儲序號-城市對應關系
  • 再用一個QMap存儲每個序號-子序號對應關系 *
  • QComboBox用的時候
  • 第一個QComboBox,提取idChildsMap--Key為0的 QList,從idNameMap,遍歷進去
  • 第二個QComboBoX,以第一個QComboBox選的id為key從idChildsMap提取...遍歷
  • 第三個以第二個選的id來.. *
  • void addItem(const QString & text, const QVariant & userData = QVariant())
  • QVariant currentData(int role = Qt::UserRole) const
  • QComboBox 插的時候 ,把id 作為第二個參數,這樣選擇的時候就可以取到城市對應的id了
    */
    void GetCity()
    {
    QMap idNameMap; //序號--名稱
    QMap > idChildsMap; //序號--所有子序號

    QFile file("city.txt");

    if (file.open(QIODevice::ReadOnly))
    {
    file.readLine();
    file.readLine();

    //從第三行開始
    while (!file.atEnd())
    {
        QString strLine = file.readLine();
    
        //分為兩部分 左邊-id 右邊-id:城市名
        QStringList firstSplits = strLine.split(":{");
    
        //以下提取 序號-名稱 所有子序號
        QString strCity = firstSplits.last().remove("}");
        strCity = strCity.remove("‘");
        QSringList strCityList = strCity.split(",");
    
        QList<int> idList;
    
        for (int i = 0; i < strCityList.count(); ++i)
        {
            int id = strCityList.at(i).split(":").first().toInt();
            QString city = strCityList.at(i).split(":").last();
            idList << id;
            idNameMap.insert(id, city);
        }
    
        //以下提取 序號--所有子序號
        QString strId = firstSplits.first().remove("’");
        QStringList strIdList = strId.split(",");
    
        idChildsMap.insert(strIdList.last().toInt(), idList);
    }
    

    }
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved