JMR*_*zAb 4 qt json qtableview
我正在开发一个 Web 服务客户端,我可以在其中获取 JSON 对象数组,并且我想用它们填充 QTableView。JSON 键应该是列标题,值应该是每行数据。
JSON 数组示例:
[{"id":"1","name":"Robotina","type":"droid","year":"1970"},{"id":"2","name":"Astro男孩","type":"droid","year":"2015"},{"id":"3","name":"终结者","type":"droid","year":" 2020"},{"id":"4","name":"Bender","type":"droid","year":"3000"},{"id":"5","name" :"C-3PO","类型":"droid","年份":"1978"},{"id":"6","名称":"R2D2","类型":"droid","年":"1977"},{"id":"7","name":"无敌铁金刚","type":"droid","year":"1987"},{"id":"8 ","name":"机械战警","type":"droid","year":"1987"},{"id":"9","name":"WALL-E","type": "机械","年份":"2200"},{"id":"10","名称":"EVE","类型":"机械","年份":"2200"}]
我有一个类似的问题,因为我的 Json 查询作为散列数组返回。
我在这里整理了一个 QJsonTableModel:https : //github.com/poulh/qjsontablemodel
QJsonTableModel::Header header;
header.push_back( QJsonTableModel::Heading( { {"title","Title"}, {"index","title"} }) );
header.push_back( QJsonTableModel::Heading( { {"title","Season"}, {"index","season"} }) );
header.push_back( QJsonTableModel::Heading( { {"title","Episode"}, {"index","episode"} }) );
header.push_back( QJsonTableModel::Heading( { {"title","Air Date"}, {"index","air_date"} }) );
episodes = new QJsonTableModel( header, this );
ui->episodeTableView->setModel( episodes );
QString json = "[{\"series\":\"Black Sails\",\"season\":1,\"episode\":1,\"title\":\"I.\",\"air_date\":\"2014-01-25\"},{\"series\":\"Black Sails\",\"season\":1,\"episode\":2,\"title\":\"II.\",\"air_date\":\"2014-02-01\"}]";
QJsonDocument jsonDocument = QJsonDocument::fromJson( json );
episodes->setJson( jsonDocument );
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过 QModelIndex 检索该行的 Json 对象。无论您单击哪个单元格,它都会为您提供整行的 Json 对象。
void TVTime::on_episodesTableView_doubleClicked(const QModelIndex &index)
{
QJsonObject object = episodes->getJsonObject( index );
qDebug() << object["title"];
}
Run Code Online (Sandbox Code Playgroud)
让我知道它是否有效。
| 归档时间: |
|
| 查看次数: |
2882 次 |
| 最近记录: |