runchwiget.cpp 2.6 KB

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