HAL
key_value_table.cpp
Go to the documentation of this file.
3 #include <QGridLayout>
4 
5 namespace hal {
7  : QWidget(parent)
8  {
9  QGridLayout* layout = new QGridLayout(this);
10  layout->addWidget(new QLabel(labl,this),0,0);
11  mTable = new QTableWidget(this);
12  mTable->setColumnCount(2);
13  mTable->setRowCount(3);
14  const char* headr[] = { "Key", "Value"};
15  for (int icol=0; icol<2; icol++)
16  {
17  QTableWidgetItem* item = new QTableWidgetItem(headr[icol]);
18  QFont fnt = item->font();
19  fnt.setBold(true);
20  fnt.setPointSize(14);
21  item->setFont(fnt);
22  mTable->setHorizontalHeaderItem(icol,item);
23  }
25  layout->addWidget(mTable,1,0);
26  }
27 
28  void KeyValueTable::setJson(const std::string& jsonTxt)
29  {
30  std::unordered_map<std::string,std::string> dict = JsonConverter::stringToDictionary(jsonTxt);
31  int nrows = dict.size() + 1;
32  if (mTable->rowCount() < nrows) mTable->setRowCount(nrows);
33  int irow = 0;
34  for (auto it = dict.begin(); it != dict.end(); ++it)
35  {
36  mTable->setItem(irow,0,new QTableWidgetItem(QString::fromStdString(it->first)));
37  mTable->setItem(irow,1,new QTableWidgetItem(QString::fromStdString(it->second)));
38  ++irow;
39  }
40  }
41 
42  std::string KeyValueTable::toJson() const
43  {
44  std::unordered_map<std::string,std::string> dict;
45  int nrows = mTable->rowCount();
46  for (int irow=0; irow < nrows; irow++)
47  {
48  const QTableWidgetItem* item = mTable->item(irow,0);
49  if (!item) continue;
50  QString key = item->text();
51  if (key.isEmpty()) continue;
52  item = mTable->item(irow,1);
53  dict[key.toStdString()] = item ? item->text().toStdString() : std::string();
54  }
56  }
57 }
void setJson(const std::string &jsonTxt)
KeyValueTable(const QString &labl, QWidget *parent=nullptr)
std::string toJson() const
std::unordered_map< std::string, std::string > stringToDictionary(const std::string &json_string)
std::string dictionaryToString(const std::unordered_map< std::string, std::string > &key_values)
void setBold(bool enable)
void setPointSize(int pointSize)
void addWidget(QWidget *w)
QString fromStdString(const std::string &str)
bool isEmpty() const const
std::string toStdString() const const
QTableWidgetItem * item(int row, int column) const const
void setColumnCount(int columns)
void setHorizontalHeaderItem(int column, QTableWidgetItem *item)
void setItem(int row, int column, QTableWidgetItem *item)
void setRowCount(int rows)
QFont font() const const
void setFont(const QFont &font)
QString text() const const
QLayout * layout() const const
void setSizePolicy(QSizePolicy)