addresspage.cpp 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "addresspage.h"
  2. #include "ui_addresspage.h"
  3. #include <QDebug>
  4. #include <QJsonObject>
  5. #include <QJsonArray>
  6. #include <QJsonDocument>
  7. #include "httpclient.h"
  8. #include "global.h"
  9. #include <QUrl>
  10. AddressPage::AddressPage(QWidget *parent) :
  11. QWidget(parent),
  12. ui(new Ui::AddressPage)
  13. {
  14. ui->setupUi(this);
  15. m_httpClient = new HttpClient(this);
  16. QUrl localUrl("h-address/pc");
  17. QUrl fullUrl = g_url.resolved(localUrl);
  18. m_httpClient->sendHttpGetRequest(fullUrl);
  19. connect(m_httpClient, &HttpClient::httpGetFinished, [this](const QJsonDocument &data) {
  20. this->dataTable(data);
  21. });
  22. }
  23. void AddressPage::dataTable(const QJsonDocument &jsonDoc)
  24. {
  25. parseJsonString(jsonDoc);
  26. model = new QStandardItemModel(this);
  27. model->setHorizontalHeaderLabels({"名称", "设备编号", "LORA地址","描述","创建时间"});
  28. if (jsonDoc["data"].isArray()) {
  29. QJsonArray jsonArray = jsonDoc["data"].toArray();
  30. for (const QJsonValue& jsonValue : jsonArray) {
  31. QJsonObject jsonObj = jsonValue.toObject();
  32. QList<QStandardItem*> items = jsonToItem(jsonObj);
  33. model->appendRow(items);
  34. }
  35. }
  36. ui->treeView->setModel(model);
  37. ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch);
  38. ui->treeView->header()->setDefaultAlignment(Qt::AlignCenter);
  39. ui->treeView->setAlternatingRowColors(true);
  40. }
  41. void AddressPage::parseJsonString(const QJsonDocument &jsonDoc)
  42. {
  43. QJsonObject jsonObj = jsonDoc.object();
  44. QJsonObject dataObj = jsonObj["data"].toObject();
  45. dataArray = dataObj["list"].toArray();
  46. }
  47. QList<QStandardItem *> AddressPage::jsonToItem(const QJsonObject &jsonObj)
  48. {
  49. QStandardItem* nameItem = new QStandardItem(jsonObj["name"].toString());
  50. nameItem->setTextAlignment(Qt::AlignCenter);
  51. QStandardItem* equipmentSn = new QStandardItem(jsonObj["equipmentSn"].toString());
  52. QStandardItem* loraSn = new QStandardItem(jsonObj["loraSn"].toString());
  53. QStandardItem* describe = new QStandardItem(jsonObj["describe"].toString());
  54. QString isoDateTimeStr = jsonObj["createdAt"].toString();
  55. QDateTime dateTime = QDateTime::fromString(isoDateTimeStr, Qt::ISODateWithMs);
  56. QString formattedDateTime = dateTime.toString("yyyy-MM-dd hh:mm:ss");
  57. QStandardItem* createdAt = new QStandardItem(formattedDateTime);
  58. if (jsonObj.contains("children") && jsonObj["children"].isArray()) {
  59. QJsonArray childrenArray = jsonObj["children"].toArray();
  60. for (const QJsonValue& child : childrenArray) {
  61. QList<QStandardItem*> childItems = jsonToItem(child.toObject());
  62. nameItem->appendRow(childItems);
  63. }
  64. }
  65. return QList<QStandardItem*>() << nameItem << equipmentSn << loraSn<<describe<<createdAt;
  66. }
  67. AddressPage::~AddressPage()
  68. {
  69. delete ui;
  70. }