runchwiget.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #include "runchwiget.h"
  2. #include "ui_runchwiget.h"
  3. #include "pdu_ctrl.h"
  4. #include <QScroller>
  5. #include <warningwnd.h>
  6. RunChWiget::RunChWiget(QWidget *parent) :
  7. QWidget(parent),
  8. ui(new Ui::RunChWiget),
  9. SaveIndex(0)
  10. {
  11. ui->setupUi(this);
  12. //setRunCh();
  13. ui->scrollAreaWidgetContents->SetScrollBar(ui->scrollArea->horizontalScrollBar(),ui->scrollArea->verticalScrollBar());
  14. connect(ui->pushButton,&QPushButton::clicked,this,&RunChWiget::slot_ALLCHCtrl);
  15. }
  16. RunChWiget::~RunChWiget()
  17. {
  18. delete ui;
  19. }
  20. void RunChWiget::setRunCh()
  21. {
  22. GlobalPowerCtrlBoard* pAllChData=nullptr;
  23. int nSize=pdu_Ctrl::instance()->getPowerBoard(pAllChData);
  24. if(!pAllChData||nSize==SaveIndex)
  25. {
  26. return;
  27. }
  28. qDebug()<<"CHUpdate:Size="<<nSize<<"SaveIndex="<<SaveIndex;
  29. ClearCH();
  30. SaveIndex=nSize;
  31. int nChId=1;
  32. for (int nIndex=0;nIndex<nSize;nIndex++)
  33. {
  34. qDebug()<<"AddBoard"<<nIndex<<" Size="<<pAllChData[nIndex].product_number;
  35. for(int nSubIndex=0;nSubIndex<pAllChData[nIndex].product_number;nSubIndex++)
  36. {
  37. int nChIndex=nChId++;
  38. ch_Widget* pNewCH=new ch_Widget(this);
  39. pNewCH->setDataCHP(nChIndex,&(pAllChData[nIndex]._PowerInfo[nSubIndex]),&(pAllChData[nIndex]._PowerWarninginfo[nSubIndex]));
  40. connect(pNewCH,SIGNAL(singal_DoubleClick(int)),this,SLOT(slot_CtrlCH(int)));
  41. qDebug()<<"AddWidget="<<nChIndex;
  42. AddWidget(pNewCH);
  43. pNewCH->show();
  44. }
  45. }
  46. }
  47. void RunChWiget::UpdateAllCh()
  48. {
  49. setRunCh();
  50. for(auto var : m_vecChWidget)
  51. {
  52. if(var)
  53. {
  54. var->UpdateData();
  55. }
  56. }
  57. update();
  58. }
  59. void RunChWiget::ClearCH()
  60. {
  61. for(auto var : m_vecChWidget)
  62. {
  63. if(var)
  64. {
  65. var->hide();
  66. delete var;
  67. }
  68. var=nullptr;
  69. }
  70. m_vecChWidget.clear();
  71. qDebug()<<"ClearCH";
  72. }
  73. void RunChWiget::AddWidget(ch_Widget *pCHWidget)
  74. {
  75. int nSize=m_vecChWidget.size();
  76. ui->gridLayout->addWidget(pCHWidget,nSize/2,nSize%2);
  77. m_vecChWidget.push_back(pCHWidget);
  78. }
  79. void RunChWiget::initScrollArea()
  80. {
  81. // 启用触控手势
  82. QScroller::grabGesture(ui->scrollArea->viewport(), QScroller::TouchGesture);
  83. // 获取滚动控制器
  84. QScroller* scroller = QScroller::scroller(ui->scrollArea);
  85. // 配置滚动参数
  86. QScrollerProperties prop = scroller->scrollerProperties();
  87. // 设置滚动摩擦系数(值越小惯性越长)
  88. prop.setScrollMetric(QScrollerProperties::DragVelocitySmoothingFactor, 0.6);
  89. prop.setScrollMetric(QScrollerProperties::MinimumVelocity, 0.0);
  90. prop.setScrollMetric(QScrollerProperties::MaximumVelocity, 0.5);
  91. prop.setScrollMetric(QScrollerProperties::SnapPositionRatio, 0.2);
  92. prop.setScrollMetric(QScrollerProperties::DragStartDistance, 0.001);
  93. scroller->setScrollerProperties(prop);
  94. // 设置视口必须接受触摸事件
  95. ui->scrollArea->viewport()->setAttribute(Qt::WA_AcceptTouchEvents);
  96. }
  97. void RunChWiget::slot_CtrlCH(int nIndex)
  98. {
  99. WarningWnd pCtrlBox(this);
  100. pCtrlBox.SetCHID(nIndex);
  101. //connect(pCtrlBox,SIGNAL(signals_CHCtrl(int,int)),this,SLOT());
  102. pCtrlBox.setModal(true);
  103. pCtrlBox.exec();
  104. }
  105. void RunChWiget::slot_ALLCHCtrl()
  106. {
  107. WarningWnd pCtrlBox(this);
  108. pCtrlBox.SetCHID(0);
  109. //connect(pCtrlBox,SIGNAL(signals_CHCtrl(int,int)),this,SLOT());
  110. pCtrlBox.setModal(true);
  111. pCtrlBox.exec();
  112. }