1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          abstracttablemodel(QAbstractTableModel的使用方法)

          來源:互聯網轉載 時間:2024-05-06 14:08:40

          QAbstractTableModel 結合 QTableView 使用,是QTableView的呈現的數據存儲。繼承QAbstractTableModel 必須重載以下幾個純虛函數(這些函數來自 QAbstractTableModel 的父類 QAbstractItemModel) :

          Q_INVOKABLEvirtualintrowCount(constQModelIndex&parent=QModelIndex())const;Q_INVOKABLEvirtualintcolumnCount(constQModelIndex&parent=QModelIndex())const;Q_INVOKABLEvirtualQVariantdata(constQModelIndex&index,introle=Qt::DisplayRole)const;

          其中 data 函數用來填充QTableView 每一個單元格內容。其 role 雖為int類型,但實際的值為 Qt::ItemDataRole 枚舉類型 ,如下圖:

          簡單的例子:

          //tablemodel.h#include<QAbstractTableModel>#include<QStringList>#include<QVariant>#defineOVERLOAD_QT_CLASS_FUNCTION_DEGIN#defineOVERLOAD_QT_CLASS_FUNCTION_ENDclassCTableModel:publicQAbstractTableModel{Q_OBJECTpublic:/***@briefTheTRowDatastruct行數據*/structTRowData{QStringsItem1;QStringsItem2;QStringsItem3;QStringsItem4;};private:/***@briefTheTHeaderDatastruct表頭數據*/structTHeaderData{Qt::OrientationeOrientation;///<水平方向或者豎直方向QVariantoMetaData;///<原生數據intiRole;///<表頭數據};public:explicitCTableModel(QObject*parent);voidSetHeader(constQStringList&_clstHeader);voidSetContentData(constQVector<TRowData>&_cvTableData);OVERLOAD_QT_CLASS_FUNCTION_DEGIN/***@briefsetHeaderData該函數為QAbstractItemModel的虛函數,其內部功能未實現,若想使用需要手動重載*@paramsection*@paramorientation*@paramvalue*@paramrole*@return*/virtualboolsetHeaderData(intsection,Qt::Orientationorientation,constQVariant&value,introle=Qt::EditRole)override;Q_INVOKABLEvirtualintrowCount(constQModelIndex&parent=QModelIndex())constoverride;Q_INVOKABLEvirtualintcolumnCount(constQModelIndex&parent=QModelIndex())constoverride;Q_INVOKABLEvirtualQVariantdata(constQModelIndex&index,introle=Qt::DisplayRole)constoverride;Q_INVOKABLEvirtualQVariantheaderData(intsection,Qt::Orientationorientation,introle=Qt::DisplayRole)constoverride;OVERLOAD_QT_CLASS_FUNCTION_ENDprivate:QHash<int,THeaderData>m_hashSection2HHeader;///<水平表頭數據QHash<int,THeaderData>m_hashSection2VHeader;///<垂直表頭數據QVector<TRowData>m_vtRowData;///<數據表intm_iColumnCount;///<表頭字段};
          //tablemodel.cpp#include"tablemodel.h"CTableModel::CTableModel(QObject*parent):QAbstractTableModel(parent){}voidCTableModel::SetHeader(constQStringList&_clstHeader){m_iColumnCount=_clstHeader.size();for(inti=0;i<_clstHeader.size();i++){QStringsHeader=_clstHeader.at(i);qDebug()<<this->setHeaderData(i,Qt::Horizontal,sHeader,Qt::DisplayRole);}}voidCTableModel::SetContentData(constQVector<CTableModel::TRowData>&_cvTableData){QAbstractItemModel::beginResetModel();m_vtRowData=_cvTableData;QAbstractItemModel::endResetModel();}boolCTableModel::setHeaderData(intsection,Qt::Orientationorientation,constQVariant&value,introle){if(section<m_iColumnCount){THeaderDatatData;tData.eOrientation=Qt::Horizontal;tData.iRole=Qt::DisplayRole;tData.oMetaData=value;m_hashSection2HHeader[section]=tData;emitheaderDataChanged(Qt::Horizontal,section,section);returntrue;}else{returnfalse;}}intCTableModel::rowCount(constQModelIndex&parent)const{returnm_vtRowData.size();}intCTableModel::columnCount(constQModelIndex&parent)const{returnm_iColumnCount;}QVariantCTableModel::data(constQModelIndex&index,introle)const{if(role==Qt::DisplayRole){intiRow=index.row();intiColumn=index.column();if(iColumn<4&&iRow<m_vtRowData.size()){switch(iColumn){case0:returnm_vtRowData[iRow].sItem1;case1:returnm_vtRowData[iRow].sItem2;case2:returnm_vtRowData[iRow].sItem3;case3:returnm_vtRowData[iRow].sItem4;default:returnQVariant();}}returnQVariant();}elseif(role==Qt::TextAlignmentRole){returnQt::AlignCenter;}returnQVariant();}QVariantCTableModel::headerData(intsection,Qt::Orientationorientation,introle)const{if(section<m_iColumnCount){switch(role){caseQt::DisplayRole:{switch(orientation){caseQt::Horizontal:{if(m_hashSection2HHeader.contains(section)){returnm_hashSection2HHeader[section].oMetaData;}else{returnQVariant();}}caseQt::Vertical:default:returnQVariant();}}default:returnQVariant();}}else{returnQVariant();}}

          調用 CTableModel:

          m_pModel=newCTableModel(ui->tableView);QStringListlstHeader={"測試1","測試1","測試1","測試1"};m_pModel->SetHeader(lstHeader);ui->tableView->setModel(m_pModel);QVector<CTableModel::TRowData>vtModelData;for(inti=0;i<10;i++){CTableModel::TRowDatatData;tData.sItem1=QString("數據%1_%2").arg(i).arg(1);tData.sItem2=QString("數據%1_%2").arg(i).arg(2);tData.sItem3=QString("數據%1_%2").arg(i).arg(3);tData.sItem4=QString("數據%1_%2").arg(i).arg(4);vtModelData.push_back(tData);}m_pModel->SetContentData(vtModelData);

          到此,相信大家對“QAbstractTableModel的使用方法”有了更深的了解,不妨來實際操作一番吧!這里是本站網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

          標簽:abstracttablemodel-

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          美元印鈔將會對世界經濟產生以下的影響:1、美元印鈔將導致熱錢從美國流入國際商品市場和亞洲新興市場,股市出現泡沫情況。2、熱錢的流入推高商品價格,繼而推動這些國家經濟通脹趨勢。除此之外,美元印鈔將會導致美元貶值,其他國家的貨幣相對來說升值,從而也會產生以下影響:美元貶值對進出口所產生的影響。美元貶值將會增加美國的出口,減少進口;同時,在一定程度上會增加中國對美國的進口,而出口將會減少。對就業的影響。...

          (資料圖片)在生活中,很多人都不知道頑物喪志是什么意思是什么意思,其實他的意思是非常簡單的,下面就是小編搜索到的頑物喪志是什么意思相關的一些知識,我們一起來學習下吧!應該是玩物喪志。意思:常用來指醉心于某些自己所喜好的事物,從而喪失了積極進取的志氣。出處:《書·旅獒》:“玩人喪德,玩物喪志?!彼未祆?《近思錄》卷二:“ 明道先生 以記誦博識為玩物喪志?!闭Z法:連動式,作謂語、賓語、定語,多含貶義...

          【資料圖】哈嘍小伙伴們 ,今天給大家科普一個小知識。在日常生活中我們或多或少的都會接觸到明朝有朱歷這個皇帝嗎方面的一些說法,有的小伙伴還不是很了解,今天就給大家詳細的介紹一下關于明朝有朱歷這個皇帝嗎的相關內容。明朝皇帝:明太祖朱元璋、明惠帝朱允炆、明成祖朱棣、明仁宗朱高熾、明宣宗朱瞻基、明英宗朱祁鎮、明代宗朱祁鈺、明憲宗朱見深 、明孝宗朱佑樘、明武宗朱厚照、明世宗朱厚熜、明穆宗朱載垕、明神宗朱翊鈞...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>