(owed by: 春夜喜雨
參考:qt原始碼
qstandarditemmodel_p.h
qstandarditemmodel.h
qstandarditemmodel.cpp
qabstractitemmodel.h
qabstractitemmodel.cpp
qabstractitemmodel是乙個介面類,使用時需要從它繼承下來,實現相關的函式後使用。
不同於qstandarditemmodel,使用qabstractitemmodel的話,需要自己構造樹形結構資料,並在虛函式中返回對應的值。
當然,簡單使用的話,也可以快速構造出沒有父節點的簡單**結構。
形如根節點下列了幾排幾列子節點的**情形。
需要繼承的類有:
class historymodel : public qabstractitemmodel
;
實現幾排幾列**情形的例子:
historymodel::historymodel(qobject *parent /*= 0*/)
: qabstractitemmodel(parent)
qmodelindex historymodel::index(int row, int column, const qmodelindex &parent /*= qmodelindex()*/) const
qmodelindex historymodel::parent(const qmodelindex &child) const
int historymodel::rowcount(const qmodelindex &parent /*= qmodelindex()*/) const
return 0;
}int historymodel::columncount(const qmodelindex &parent /*= qmodelindex()*/) const
qvariant historymodel::data(const qmodelindex &index, int role /*= qt::displayrole*/) const
進一步使用,新增樹形結構,自己構造樹形結構資料:
struct nodeinfo
};
生成如下的這種介面:兩個level=1節點,每個節點下有一些資料
可以這樣來做:
每個節點儲存乙個nodeinfo資訊,這樣
每個節點可以查詢子節點數量
每個節點可以查詢到自身資料
可以根據nodeinfo資訊(row/col/this)獲取到qmodeindex
資料構造時,形成nodeinfo的樹形層次
qabstractitemmodel的介面中,index函式中繫結nodeinfo
qabstractitemmodel的其它介面中,查詢nodeinfo並使用
historymodel::historymodel(qobject *parent /*= 0*/)
: qabstractitemmodel(parent)
qmodelindex historymodel::index(int row, int column, const qmodelindex &parent /*= qmodelindex()*/) const
else}}
return qmodelindex();
}qmodelindex historymodel::parent(const qmodelindex &child) const
}return qmodelindex();
}int historymodel::rowcount(const qmodelindex &parent) const
else
}int historymodel::columncount(const qmodelindex &parent /*= qmodelindex()*/) const
qvariant historymodel::data(const qmodelindex &index, int role /*= qt::displayrole*/) const
else if (role == qt::displayrole)
else
}else
}
(owed by: 春夜喜雨 rapidjson使用樣例
rapidjson預設支援的字元格式是utf 8的,一般中間介面是json檔案的話儲存為utf 8比較通用一些。如果是unicode的需要轉換。但從原始碼中的ch型別看,應該是支援泛型的,具體在用到了可以仔細研究一下。這篇文件中有json解析相關庫的效能比較,rapidjson還是各方面均衡比較突出...
gcc的使用例解
linux系統下的gcc gnu c compiler 是gnu推出的功能強大 效能優越的多平台編譯器,是gnu的代表作品之一。gcc是可以在多種硬體平台上編譯出可執行程式的超級編譯器,其執行效率與一般的編譯器相比平均效率要高20 30 gcc 可同時用來編譯 c 程式和 c 程式。一般來說,c 編...
tcl tk詳解 glob使用例解
新增鏈結描述 名稱glob 返回模式匹配的檔名語法 glob switches?pattern pattern 描述這個命令返回乙個匹配pattern變元的檔案列表,返回的列表並不排序,如果需要排序就需要呼叫lsort命令。如果初始變元使用 開頭,就作為標誌出現,以下所述是目前支援的標誌位 dire...