oambtsparam.cpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543
  1. #include "oambtsparam.h"
  2. #include "ui_oambtsparam.h"
  3. #include "maindlg.h"
  4. #include "includes.h"
  5. #include <QJsonObject>
  6. OamBtsParam::OamBtsParam(QWidget *parent)
  7. : QDialog(parent)
  8. , ui(new Ui::OamBtsParam)
  9. {
  10. ui->setupUi(this);
  11. m_pMainDlg = static_cast<MainDlg*>(parent);//保存主窗口指针
  12. m_dwDeviceType = m_pMainDlg->getDeviceType();
  13. initUi();
  14. connect(ui->pushButtonAllSel, &QPushButton::clicked, this,&this->selectAllItem);//全选
  15. connect(ui->pushButtonAllNoSel, &QPushButton::clicked, this,&this->selectAllNoItem);//全不选
  16. connect(ui->pushButtonClear, &QPushButton::clicked, this,&this->clearAllItem);//清空
  17. connect(ui->pushButtonQuery, &QPushButton::clicked, this,&this->queryParam);//查询参数
  18. connect(ui->pushButtonConfig, &QPushButton::clicked, this,&this->configParam);//设置参数
  19. connect(ui->pushButtonUploadParam, &QPushButton::clicked, this,&this->uploadBtsBaseParamAdd);//上传参数
  20. //connect(ui->pushButtonImportProjectId, &QPushButton::clicked, this,&this->getProjectId);//导入项目编号
  21. connect(this->ui->comboBoxLocationType, &QComboBox::currentIndexChanged, this, &this->slotLocationTypeChanged);
  22. //将消息发送到主控模块
  23. connect(this, &this->SignalSendQueryMsg, m_pMainDlg, &m_pMainDlg->slotOamSendQueryMsg);
  24. connect(this, &this->SignalSendConfigMsg, m_pMainDlg, &m_pMainDlg->slotOamSendConfigMsg);
  25. connect(this, &this->SignalUploadBtsBaseParamAdd, m_pMainDlg, &m_pMainDlg->slotUploadBtsBaseParamAdd);
  26. }
  27. OamBtsParam::~OamBtsParam()
  28. {
  29. delete ui;
  30. }
  31. //初始化UI
  32. void OamBtsParam::initUi(){
  33. QString strText = "";
  34. //初始化载波ID下拉框
  35. ui->comboBoxCarrierId->addItem("请选择", 0);
  36. for(quint8 i = 1; i < 10; i++){
  37. strText = QString::number(i) + "号载波";
  38. ui->comboBoxCarrierId->addItem(strText, i);
  39. }
  40. //初始化时隙下拉框
  41. ui->comboBoxTimeSlot->addItem("请选择", 0);
  42. for(quint8 i = 1; i < 5; i++){
  43. strText = QString::number(i) + "号时隙";
  44. ui->comboBoxTimeSlot->addItem(strText, i);
  45. }
  46. //定位类型
  47. ui->comboBoxLocationType->addItem("请选择", 0);
  48. ui->comboBoxLocationType->addItem("一维定位", 1);
  49. ui->comboBoxLocationType->addItem("二维定位", 2);
  50. ui->comboBoxLocationType->addItem("融合定位", 3);
  51. updateUi();
  52. }
  53. //更新页面
  54. void OamBtsParam::updateUi(){
  55. m_dwDeviceType = m_pMainDlg->getDeviceType();
  56. //声波基站
  57. if(m_dwDeviceType == 0){
  58. ui->checkBoxBtsId->setDisabled(false);
  59. ui->checkBoxCarrierId->setDisabled(false);
  60. ui->checkBoxTimeslot->setDisabled(false);
  61. ui->checkBoxLocationType->setDisabled(false);
  62. ui->checkBoxTwoBtsNum->setDisabled(false);
  63. ui->checkBoxTwoBtsList->setDisabled(false);
  64. ui->spinBoxBtsId->setDisabled(false);
  65. ui->comboBoxCarrierId->setDisabled(false);
  66. ui->comboBoxTimeSlot->setDisabled(false);
  67. ui->comboBoxLocationType->setDisabled(false);
  68. ui->spinBoxTwoBtsNum->setDisabled(false);
  69. ui->lineEditTwoBtsList->setDisabled(false);
  70. }else{//同步站或中继站
  71. ui->checkBoxBtsId->setDisabled(false);
  72. ui->checkBoxCarrierId->setChecked(false);
  73. ui->checkBoxCarrierId->setDisabled(true);
  74. ui->checkBoxTimeslot->setChecked(false);
  75. ui->checkBoxTimeslot->setDisabled(true);
  76. ui->checkBoxLocationType->setChecked(false);
  77. ui->checkBoxLocationType->setDisabled(true);
  78. ui->checkBoxTwoBtsNum->setChecked(false);
  79. ui->checkBoxTwoBtsNum->setDisabled(true);
  80. ui->checkBoxTwoBtsList->setChecked(false);
  81. ui->checkBoxTwoBtsList->setDisabled(true);
  82. ui->spinBoxBtsId->setDisabled(false);
  83. ui->comboBoxCarrierId->setDisabled(true);
  84. ui->comboBoxTimeSlot->setDisabled(true);
  85. ui->comboBoxLocationType->setDisabled(true);
  86. ui->spinBoxTwoBtsNum->setDisabled(true);
  87. ui->lineEditTwoBtsList->setDisabled(true);
  88. }
  89. }
  90. //全选
  91. void OamBtsParam::selectAllItem(){
  92. ui->checkBoxBtsId->setChecked(true);
  93. //声波基站
  94. if(m_dwDeviceType == 0){
  95. ui->checkBoxCarrierId->setChecked(true);
  96. ui->checkBoxTimeslot->setChecked(true);
  97. ui->checkBoxLocationType->setChecked(true);
  98. ui->checkBoxTwoBtsNum->setChecked(true);
  99. ui->checkBoxTwoBtsList->setChecked(true);
  100. }else{//同步基站
  101. ui->checkBoxCarrierId->setChecked(false);
  102. ui->checkBoxTimeslot->setChecked(false);
  103. ui->checkBoxLocationType->setChecked(false);
  104. ui->checkBoxTwoBtsNum->setChecked(false);
  105. ui->checkBoxTwoBtsList->setChecked(false);
  106. }
  107. }
  108. //全不选
  109. void OamBtsParam::selectAllNoItem(){
  110. ui->checkBoxBtsId->setChecked(false);
  111. ui->checkBoxCarrierId->setChecked(false);
  112. ui->checkBoxTimeslot->setChecked(false);
  113. ui->checkBoxLocationType->setChecked(false);
  114. ui->checkBoxTwoBtsNum->setChecked(false);
  115. ui->checkBoxTwoBtsList->setChecked(false);
  116. }
  117. //清空参数
  118. void OamBtsParam::clearAllItem(){
  119. QString strText = "";
  120. ui->spinBoxBtsId->setValue(10000);
  121. ui->comboBoxCarrierId->setCurrentIndex(0);
  122. ui->comboBoxTimeSlot->setCurrentIndex(0);
  123. ui->comboBoxLocationType->setCurrentIndex(0);
  124. ui->spinBoxTwoBtsNum->setValue(0);
  125. ui->lineEditTwoBtsList->setText(strText);
  126. }
  127. //切换按钮状态
  128. //byFlag:开关状态,true:可用,false:不可用
  129. void OamBtsParam::switchBtnFlag(bool byFlag){
  130. ui->pushButtonAllSel->setEnabled(byFlag);
  131. ui->pushButtonAllNoSel->setEnabled(byFlag);
  132. ui->pushButtonClear->setEnabled(byFlag);
  133. ui->pushButtonQuery->setEnabled(byFlag);
  134. ui->pushButtonConfig->setEnabled(byFlag);
  135. }
  136. //查询参数
  137. void OamBtsParam::queryParam(){
  138. quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
  139. quint8 *pbyHead = abyData;
  140. quint16 wLen = 0;
  141. LTV_T stLtv;
  142. //禁用按钮
  143. switchBtnFlag(false);
  144. memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
  145. memset((void*)&stLtv, 0, sizeof(LTV_T));
  146. if(ui->checkBoxBtsId->isChecked()){//基站ID
  147. stLtv.wLen = 8;
  148. stLtv.wTag = ORDER_BTS_ID;
  149. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  150. wLen = wLen + stLtv.wLen;
  151. pbyHead = pbyHead + stLtv.wLen;
  152. }
  153. if(ui->checkBoxCarrierId->isChecked()){//载波ID
  154. stLtv.wLen = 5;
  155. stLtv.wTag = ORDER_BTS_CARRIER_ID;
  156. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  157. wLen = wLen + stLtv.wLen;
  158. pbyHead = pbyHead + stLtv.wLen;
  159. }
  160. if(ui->checkBoxTimeslot->isChecked()){//时隙
  161. stLtv.wLen = 5;
  162. stLtv.wTag = ORDER_BTS_TIMESLOT;
  163. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  164. wLen = wLen + stLtv.wLen;
  165. pbyHead = pbyHead + stLtv.wLen;
  166. }
  167. if(ui->checkBoxLocationType->isChecked()){//定位类型
  168. stLtv.wLen = 5;
  169. stLtv.wTag = ORDER_BTS_LOCATION_TYPE;
  170. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  171. wLen = wLen + stLtv.wLen;
  172. pbyHead = pbyHead + stLtv.wLen;
  173. }
  174. if(ui->checkBoxTwoBtsNum->isChecked()){//两站数量
  175. stLtv.wLen = 5;
  176. stLtv.wTag = ORDER_BTS_TWO_BTS_NUM;
  177. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  178. wLen = wLen + stLtv.wLen;
  179. pbyHead = pbyHead + stLtv.wLen;
  180. }
  181. if(ui->checkBoxTwoBtsList->isChecked()){//两站列表
  182. stLtv.wLen = 68;
  183. stLtv.wTag = ORDER_BTS_TWO_BTS_LIST;
  184. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  185. wLen = wLen + stLtv.wLen;
  186. pbyHead = pbyHead + stLtv.wLen;
  187. }
  188. if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){
  189. QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少查询项");
  190. switchBtnFlag(true);
  191. return;
  192. }
  193. //将参数发送给主控模块
  194. if(wLen > 0){
  195. emit SignalSendQueryMsg(abyData, wLen);
  196. }else{
  197. QMessageBox::information(this,"提示", "请至少选择一项管理项");
  198. }
  199. //启用按钮
  200. switchBtnFlag(true);
  201. return;
  202. }
  203. //显示参数
  204. void OamBtsParam::showParam(LTV_T *pstData){
  205. quint8 byLen = pstData->wLen - 4;
  206. quint16 wTag = pstData->wTag;
  207. QString strText = "";
  208. quint32 dwTmp = 0;
  209. quint8 byTmp = 0;
  210. quint8 byIndex = 0;
  211. quint16 wIndex = 0;
  212. //将数据显示在界面上
  213. if(wTag == ORDER_BTS_ID){//基站ID
  214. memcpy(&dwTmp, pstData->abyData, byLen);
  215. ui->spinBoxBtsId->setValue(dwTmp);
  216. m_dwBtsId = dwTmp;//保存基站ID
  217. m_pMainDlg->mainDlgSetBtsId(dwTmp);
  218. }else if(wTag == ORDER_BTS_CARRIER_ID){//载波ID
  219. memcpy(&byTmp, pstData->abyData, byLen);
  220. ui->comboBoxCarrierId->setCurrentIndex(byTmp);
  221. }else if(wTag == ORDER_BTS_TIMESLOT){//时隙
  222. memcpy(&byTmp, pstData->abyData, byLen);
  223. ui->comboBoxTimeSlot->setCurrentIndex(byTmp);
  224. }else if(wTag == ORDER_BTS_LOCATION_TYPE){//定位类型
  225. memcpy(&byTmp, pstData->abyData, byLen);
  226. ui->comboBoxLocationType->setCurrentIndex(byTmp);
  227. }else if(wTag == ORDER_BTS_TWO_BTS_NUM){//两站数量
  228. memcpy(&byTmp, pstData->abyData, byLen);
  229. ui->spinBoxTwoBtsNum->setValue(byTmp);
  230. }else if(wTag == ORDER_BTS_TWO_BTS_LIST){//两站列表
  231. strText = QString::fromLocal8Bit((char *)pstData->abyData, strlen((char*)pstData->abyData));
  232. strText = strText.trimmed();//去掉首尾空格
  233. ui->lineEditTwoBtsList->setText(strText);
  234. }
  235. return;
  236. }
  237. //配置参数
  238. void OamBtsParam::configParam(){
  239. quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
  240. quint8 *pbyHead = abyData;
  241. quint16 wLen = 0;
  242. LTV_T stLtv;
  243. QString stText = "";
  244. quint32 dwBtsId = 0;//基站ID
  245. quint8 byTmp = 0;
  246. QVariant varTmp;
  247. QByteArray byteTmp;
  248. QString strText = "";
  249. QByteArray baData;
  250. quint8 byCharLen = 0;
  251. //禁用按钮
  252. switchBtnFlag(false);
  253. memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
  254. memset((void*)&stLtv, 0, sizeof(LTV_T));
  255. //基站ID
  256. if(ui->checkBoxBtsId->isChecked()){
  257. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  258. stLtv.wLen = 8;
  259. stLtv.wTag = ORDER_BTS_ID;
  260. dwBtsId = ui->spinBoxBtsId->value();
  261. memcpy((void*)stLtv.abyData, &dwBtsId, (stLtv.wLen - 4));
  262. memcpy(pbyHead, &stLtv, stLtv.wLen);
  263. wLen = wLen + stLtv.wLen;
  264. pbyHead = pbyHead + stLtv.wLen;
  265. m_dwBtsId = dwBtsId;//保存基站ID
  266. m_pMainDlg->mainDlgSetBtsId(dwBtsId);
  267. }
  268. //载波ID
  269. if(ui->checkBoxCarrierId->isChecked()){
  270. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  271. stLtv.wLen = 5;
  272. stLtv.wTag = ORDER_BTS_CARRIER_ID;
  273. varTmp = ui->comboBoxCarrierId->currentData();
  274. byTmp = (quint8)varTmp.toInt();
  275. if(byTmp <= 0){
  276. QMessageBox::critical(this, "提示", "请选择基站载波");
  277. switchBtnFlag(true);
  278. return;
  279. }
  280. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  281. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  282. wLen = wLen + stLtv.wLen;
  283. pbyHead = pbyHead + stLtv.wLen;
  284. }
  285. //时隙
  286. if(ui->checkBoxTimeslot->isChecked()){
  287. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  288. stLtv.wLen = 5;
  289. stLtv.wTag = ORDER_BTS_TIMESLOT;
  290. varTmp = ui->comboBoxTimeSlot->currentData();
  291. byTmp = (quint8)varTmp.toInt();
  292. if(byTmp <= 0){
  293. QMessageBox::critical(this, "提示", "请选择基站时隙");
  294. switchBtnFlag(true);
  295. return;
  296. }
  297. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  298. memcpy(pbyHead, &stLtv, stLtv.wLen);
  299. wLen = wLen + stLtv.wLen;
  300. pbyHead = pbyHead + stLtv.wLen;
  301. }
  302. //定位类型
  303. if(ui->checkBoxLocationType->isChecked()){
  304. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  305. stLtv.wLen = 5;
  306. stLtv.wTag = ORDER_BTS_LOCATION_TYPE;
  307. varTmp = ui->comboBoxLocationType->currentData();
  308. byTmp = (quint8)varTmp.toInt();
  309. if(byTmp <= 0){
  310. QMessageBox::critical(this, "提示", "请选择定位类型");
  311. switchBtnFlag(true);
  312. return;
  313. }
  314. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  315. memcpy(pbyHead, &stLtv, stLtv.wLen);
  316. wLen = wLen + stLtv.wLen;
  317. pbyHead = pbyHead + stLtv.wLen;
  318. }
  319. //两站数量
  320. if(ui->checkBoxTwoBtsNum->isChecked()){
  321. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  322. stLtv.wLen = 5;
  323. stLtv.wTag = ORDER_BTS_TWO_BTS_NUM;
  324. byTmp = ui->spinBoxTwoBtsNum->value();
  325. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  326. memcpy(pbyHead, &stLtv, stLtv.wLen);
  327. wLen = wLen + stLtv.wLen;
  328. pbyHead = pbyHead + stLtv.wLen;
  329. }
  330. //两站列表
  331. if(ui->checkBoxTwoBtsList->isChecked()){
  332. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  333. stLtv.wLen = 52;
  334. stLtv.wTag = ORDER_BTS_TWO_BTS_LIST;
  335. strText = ui->lineEditTwoBtsList->text();
  336. strText = strText.trimmed();
  337. baData = strText.toLocal8Bit();
  338. byCharLen = baData.size();
  339. if(byCharLen > 48){
  340. QMessageBox::information(this, "提示", "两站列表字符长度超过48位");
  341. switchBtnFlag(true);//启用按钮
  342. return;
  343. }
  344. memcpy((void*)stLtv.abyData, baData, byCharLen);
  345. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  346. wLen = wLen + stLtv.wLen;
  347. pbyHead = pbyHead + stLtv.wLen;
  348. }
  349. if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){
  350. QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少查设置项");
  351. switchBtnFlag(true);
  352. return;
  353. }
  354. //将参数发送给主控模块
  355. if(wLen > 0){
  356. emit SignalSendConfigMsg(abyData, wLen, 0);
  357. }else{
  358. QMessageBox::information(this,"提示", "请至少选择一项管理项");
  359. }
  360. switchBtnFlag(true);
  361. return;
  362. }
  363. //上传基站基本参数至网管中心
  364. void OamBtsParam::uploadBtsBaseParamAdd(){
  365. QJsonObject jsonObject; //定义一个json对象
  366. QVariant varTmp;//下来框中的用户数据
  367. quint8 byTmp = 0;
  368. QString strText = "";
  369. quint32 dwBtsId = 0;
  370. quint8 byTwoNum = 0;
  371. QByteArray baData;
  372. quint8 byCharLen = 0;
  373. //禁用按钮
  374. switchBtnFlag(false);
  375. //基站ID
  376. if(ui->checkBoxBtsId->isChecked()){
  377. dwBtsId = ui->spinBoxBtsId->value();
  378. if(dwBtsId < 1000){
  379. QMessageBox::information(this,"提示", "请输入基站编号");
  380. switchBtnFlag(true);
  381. return;
  382. }
  383. jsonObject["bts_id"] = QJsonValue::fromVariant(QVariant(static_cast<quint64>(dwBtsId)));
  384. m_dwBtsId = dwBtsId;//保存基站ID
  385. m_pMainDlg->mainDlgSetBtsId(dwBtsId);
  386. }
  387. //载波ID
  388. if(ui->checkBoxCarrierId->isChecked()){
  389. varTmp = ui->comboBoxCarrierId->currentData();
  390. byTmp = (quint8)varTmp.toInt();
  391. if(byTmp <= 0){
  392. QMessageBox::critical(this, "提示", "请选择载波编号");
  393. switchBtnFlag(true);
  394. return;
  395. }
  396. jsonObject["carrier_id"] = byTmp;
  397. }
  398. //时隙
  399. if(ui->checkBoxTimeslot->isChecked()){
  400. varTmp = ui->comboBoxTimeSlot->currentData();
  401. byTmp = (quint8)varTmp.toInt();
  402. if(byTmp <= 0){
  403. QMessageBox::critical(this, "提示", "请选择基站时隙");
  404. switchBtnFlag(true);
  405. return;
  406. }
  407. jsonObject["timeslot"] = byTmp;
  408. }
  409. //定位类型
  410. if(ui->checkBoxLocationType->isChecked()){
  411. varTmp = ui->comboBoxLocationType->currentData();
  412. byTmp = (quint8)varTmp.toInt();
  413. if(byTmp <= 0){
  414. QMessageBox::critical(this, "提示", "请选择定位类型");
  415. switchBtnFlag(true);
  416. return;
  417. }
  418. jsonObject["location_type"] = byTmp;
  419. }
  420. //两站定位数量
  421. if(ui->checkBoxTwoBtsNum->isChecked()){
  422. byTwoNum = ui->spinBoxTwoBtsNum->value();
  423. jsonObject["two_bts_num"] = byTwoNum;
  424. }
  425. //两站定位基站列表
  426. if(ui->checkBoxTwoBtsList->isChecked()){
  427. strText = ui->lineEditTwoBtsList->text();
  428. strText = strText.trimmed();
  429. baData = strText.toLocal8Bit();
  430. byCharLen = baData.size();
  431. if(byCharLen > 48){
  432. QMessageBox::information(this, "提示", "两站列表字符长度超过48位");
  433. switchBtnFlag(true);
  434. return;
  435. }
  436. jsonObject["two_bts_list"] = strText;
  437. }
  438. //启用按钮
  439. switchBtnFlag(true);
  440. //发送post请求给网管中心
  441. emit SignalUploadBtsBaseParamAdd("guiUploadBtsBaseParamAdd", jsonObject);
  442. }
  443. //获得基站ID
  444. quint32 OamBtsParam::GetBtsId(){
  445. return m_dwBtsId;
  446. }
  447. //定位类型切换
  448. void OamBtsParam::slotLocationTypeChanged(int index){
  449. if(index == 1 || index == 3){//一维/融合定位
  450. ui->checkBoxTwoBtsNum->setEnabled(true);
  451. ui->spinBoxTwoBtsNum->setEnabled(true);
  452. ui->checkBoxTwoBtsList->setEnabled(true);
  453. ui->lineEditTwoBtsList->setEnabled(true);
  454. }else if(index == 2){//二维定位
  455. ui->checkBoxTwoBtsNum->setEnabled(false);
  456. ui->checkBoxTwoBtsNum->setChecked(false);
  457. ui->spinBoxTwoBtsNum->setEnabled(false);
  458. ui->checkBoxTwoBtsList->setEnabled(false);
  459. ui->checkBoxTwoBtsList->setChecked(false);
  460. ui->lineEditTwoBtsList->setEnabled(false);
  461. }
  462. return;
  463. }