QStandardItemModel數據獲取

一、QStandardItemModel的概述

QStandardItemModel是一種模型/視圖體系結構中的model,用於在其內部組織存儲數據。它提供了一個統一的介面來展示數據、提供數據(以供修改)和搜索功能。QStandardItemModel可以展示一系列標準項,這些標準項能夠以層次結構的形式展示、增加、刪除。每個標準項都可以存儲任意數量的數據。


// 樣例代碼1 創建QStandardItemModel,設置表頭,然後添加數據
QStandardItemModel *model = new QStandardItemModel;

model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("Name")));
model->setHorizontalHeaderItem(1, new QStandardItem(QObject::tr("Gender")));
model->setHorizontalHeaderItem(2, new QStandardItem(QObject::tr("Age")));

QList<QStandardItem *> itemList;
itemList << new QStandardItem("Tom") << new QStandardItem("Male") << new QStandardItem("20");
model->appendRow(itemList);

itemList.clear();
itemList << new QStandardItem("Jane") << new QStandardItem("Female") << new QStandardItem("25");
model->appendRow(itemList);

二、QStandardItemModel數據獲取方法

1、獲取整列表格數據

下面給出的代碼可以獲取整個QStandardItemModel的數據。代碼將會返回一張表格,表格的行列數與QStandardItemModel的行列數相同,保存了每個單元格的數據。


// 樣例代碼2 獲取QStandardItemModel整個表格數據
int row = model->rowCount();
int column = model->columnCount();

QList<QList<QString>> tableData;
for (int i = 0; i < row; i++)
{
    QList<QString> rowData;
    for (int j = 0; j < column; j++)
    {
        rowData.append(model->item(i, j)->text());
    }
    tableData.append(rowData);
}

2、獲取特定行的數據

可以用QStandardItemModel::takeRow()方法提取指定行的數據,該方法返回一個QList<QStandardItem *>對象,該對象中存儲了QStandardItem指針對象,可以通過getData()方法獲取單元格數據。


// 樣例代碼3 提取第一行的數據
QList<QStandardItem *> itemList = model->takeRow(0);

for (auto &item : itemList) {
    QString data = item->data().toString();
}

3、獲取指定列的數據

可以用QStandardItemModel::takeColumn()方法提取指定列的數據,該方法返回一個QList<QStandardItem *>對象,該對象中存儲了QStandardItem指針對象,可以通過getData()方法獲取單元格數據。


// 樣例代碼4 提取第一列的數據
QList<QStandardItem *> itemList = model->takeColumn(0);

for (auto &item : itemList) {
    QString data = item->data().toString();    
}

4、按條件搜索特定數據

可以使用QStandardItemModel::findItems()方法來搜索符合條件的項。該方法會返回搜索到的QStandardItem對象列表。


// 樣例代碼5 模糊搜索
QString keyword = "Tom";
QList<QStandardItem *> itemList = model->findItems(keyword, Qt::MatchContains);
for (auto &item : itemList) {
    QString data = item->data().toString();
}

5、QStandardItem如何存儲數據

QStandardItemModel中的每個標準項(QStandardItem對象)都可以存儲多個角色數據,比如顯示數據、用戶數據、狀態數據等。通過getItemData()方法可以獲取該項的全部數據。


// 樣例代碼6 獲取第一項(0,0)的角色數據
QList<QVariant> roleData = model->item(0, 0)->data(Qt::DisplayRole);

for (auto &var : roleData) {
    QString data = var.toString();   
}

三、總結

QStandardItemModel是一種方便易用的數據模型,通過它能夠快速很多的完成不同場景下的數據展示與處理。在實際開發中,我們可以利用QStandardItem類的豐富介面,高效地提取、組織並存儲任意數據,從而更好地處理各種UI類型的數據展示需求。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254872.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:13
下一篇 2024-12-15 12:13

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python根據表格數據生成折線圖

    本文將介紹如何使用Python根據表格數據生成折線圖。折線圖是一種常見的數據可視化圖表形式,可以用來展示數據的趨勢和變化。Python是一種流行的編程語言,其強大的數據分析和可視化…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29

發表回復

登錄後才能評論