JIoMapPage.cpp 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. #include "JIoMapPage.h"
  2. #include <Machine.h>
  3. #include <QJsonObject>
  4. JIoMapPage::JIoMapPage() {}
  5. QWidget* JIoMapPage::CreateIoPage(const QString& strName)
  6. {
  7. // 1.用到表中的变量
  8. //QString strName = control.strName.c_str();
  9. // 2. 创建垂直布局
  10. QHBoxLayout* pHLayout = new QHBoxLayout();
  11. IoStateLab* pIoState = new IoStateLab();
  12. pIoState->setIoName(strName);
  13. QLabel* pAxisNmae = new QLabel();
  14. QString strAxisName = tr("IO Nmae:", "IO名称:");
  15. strAxisName += " ";
  16. strAxisName += strName;
  17. pAxisNmae->setText(strAxisName);
  18. //QLabel* pLow = new QLabel();
  19. //pLow->setText(tr("Voltage status", "电压状态"));
  20. //QComboBox* pComBox = new QComboBox();
  21. //pComBox->addItem(tr("Low", "低电平"));
  22. //pComBox->addItem(tr("High","高电平"));
  23. //pComBox->setCurrentIndex(1);
  24. //// 连接信号和槽
  25. //connect(pComBox, &QComboBox::currentTextChanged, []() {
  26. // });
  27. // 轴名称
  28. pHLayout->addWidget(pAxisNmae);
  29. //// 电平组合
  30. //pHLayout->addWidget(pLow);
  31. //pHLayout->addWidget(pComBox);
  32. // 改变状态标记
  33. pHLayout->addWidget(pIoState);
  34. QWidget* pWidget = new QWidget;
  35. pWidget->setStyleSheet(
  36. /* "QWidget:hover {"
  37. " background-color: #AACBFC;"
  38. " border: 1px solid #AACBFC;"
  39. "}"*/
  40. "QWidget { background-color: #D8E8FD; }"
  41. /* "QLabel:hover { background-color: #AACBFC; }"
  42. "QLabel { background-color: #D8E8FD; }"*/
  43. );
  44. pWidget->setLayout(pHLayout);
  45. return pWidget;
  46. }
  47. QWidget* JIoMapPage::CreateAxisTestPage(const CONFIG_BASE_STRUCT& control)
  48. {
  49. // 1.用到表中的变量
  50. QString strName = control.strName.c_str();
  51. QHBoxLayout* pHLayout = new QHBoxLayout();
  52. QLabel* pAxisNmae = new QLabel();
  53. QString strAxisName = tr("AxisNmae:", "轴名称:");
  54. strAxisName += strName;
  55. pAxisNmae->setText(strAxisName);
  56. pHLayout->addWidget(pAxisNmae);
  57. QLineEdit* pCardNumberType = new QLineEdit(tr("Card Number Type", "卡号类型"));
  58. pCardNumberType->setText("0");
  59. pHLayout->addWidget(pCardNumberType);
  60. QLineEdit* pCardNumber = new QLineEdit(tr("Card Number", "卡号"));
  61. pCardNumber->setText("0");
  62. pHLayout->addWidget(pCardNumberType);
  63. QPushButton* pTest = new QPushButton(tr("Axis Test","轴测试"));
  64. QObject::connect(pTest, &QPushButton::clicked, [strName]()
  65. {
  66. ns_module::CViewMotion::GetInstance()->ShowMotionAdjustPage(strName.toStdString());
  67. });
  68. pHLayout->addWidget(pTest);
  69. QWidget* pWidget = new QWidget;
  70. pWidget->setLayout(pHLayout);
  71. return pWidget;
  72. }
  73. void JIoMapPage::JCreateMenu(QWidget* pWidget)
  74. {
  75. // 设置上下文菜单策略
  76. pWidget->setContextMenuPolicy(Qt::CustomContextMenu);
  77. // 连接信号到槽函数
  78. connect(pWidget, &QWidget::customContextMenuRequested, [=](const QPoint& pos)
  79. {
  80. QMenu menu;
  81. QAction* pGetAct = menu.addAction(tr("Get","获取"));
  82. QAction* pSetUpAct = menu.addAction(tr("set up","设置"));
  83. QAction* pDefValUpAct = menu.addAction(tr("default value", "默认值"));
  84. // 连接动作的触发信号
  85. connect(pGetAct, &QAction::triggered, []() { qDebug() << "Get"; });
  86. connect(pSetUpAct, &QAction::triggered, []() { qDebug() << "set up"; });
  87. connect(pDefValUpAct, &QAction::triggered, []() { qDebug() << "default value"; });
  88. // 显示菜单
  89. menu.exec(pWidget->mapToGlobal(pos));
  90. });
  91. }
  92. void JIoMapPage::JCreateMenu(QWidget* pWidget, ST_DEFAULT_VAL defaultVal)
  93. {
  94. pWidget->setContextMenuPolicy(Qt::CustomContextMenu);
  95. connect(pWidget, &QWidget::customContextMenuRequested, [=](const QPoint& pos)
  96. {
  97. QMenu menu;
  98. QAction* pDefValUpAct = menu.addAction(tr("default value", "默认值"));
  99. connect(pDefValUpAct, &QAction::triggered, [defaultVal]()
  100. {
  101. if (!defaultVal.fieldDefult.isEmpty())
  102. {
  103. defaultVal.lineEdit->setText(defaultVal.fieldDefult);
  104. }
  105. });
  106. menu.exec(pWidget->mapToGlobal(pos));
  107. });
  108. }
  109. QLabel* JIoMapPage::JCreateName0(const QString& fieldDescribe, const QString& fieldDescribe_Eng, int nlanguage)
  110. {
  111. QLabel* pNameLable = new QLabel();
  112. pNameLable->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
  113. pNameLable->setFixedHeight(24);
  114. // 自定义大小
  115. auto AdaptFun = [](QLabel* pNameLable, const QString name)
  116. {
  117. QFontMetrics metrics(pNameLable->font());
  118. QString elidedText = metrics.elidedText(name, Qt::ElideRight, pNameLable->width());//180
  119. pNameLable->setText(elidedText);
  120. };
  121. if (nlanguage == 0)
  122. {
  123. if (fieldDescribe_Eng.isEmpty())
  124. {
  125. AdaptFun(pNameLable, fieldDescribe);
  126. }
  127. else
  128. {
  129. AdaptFun(pNameLable, fieldDescribe_Eng);
  130. }
  131. }
  132. else
  133. {
  134. if (fieldDescribe.isEmpty())
  135. {
  136. AdaptFun(pNameLable, fieldDescribe_Eng);
  137. }
  138. else
  139. {
  140. AdaptFun(pNameLable, fieldDescribe);
  141. }
  142. }
  143. return pNameLable;
  144. }
  145. AutoResizeLabel* JIoMapPage::JCreateJText(const QString& name)
  146. {
  147. AutoResizeLabel* pLabel = new AutoResizeLabel();
  148. pLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
  149. pLabel->setFixedHeight(24);
  150. //pLabel->setFixedWidth(300);
  151. QFontMetrics metrics(pLabel->font());
  152. QString elidedText = metrics.elidedText(name, Qt::ElideRight, pLabel->width()-330);
  153. pLabel->setText(elidedText);
  154. return pLabel;
  155. }
  156. QList<ST_DATA_ITEM> JIoMapPage::parseJsonToDataList(const QString& jsonString)
  157. {
  158. QList<ST_DATA_ITEM> dataList;
  159. QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());
  160. if (jsonDoc.isNull() || !jsonDoc.isArray())
  161. {
  162. qWarning() << "解析失败或JSON不是数组";
  163. return dataList;
  164. }
  165. QJsonArray jsonArray = jsonDoc.array();
  166. // 遍历数组
  167. for (const QJsonValue& val : jsonArray)
  168. {
  169. if (val.isObject())
  170. {
  171. QJsonObject obj = val.toObject();
  172. ST_DATA_ITEM item;
  173. item.key = obj.value("key").toString();
  174. item.value = obj.value("value").toString();
  175. dataList.append(item);
  176. }
  177. }
  178. return dataList;
  179. }