runlogwidget.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #include "runlogwidget.h"
  2. #include "ui_runlogwidget.h"
  3. #include "pdu_ctrl.h"
  4. #include <QScroller>
  5. RunLogWidget::RunLogWidget(QWidget *parent) :
  6. QWidget(parent),
  7. ui(new Ui::RunLogWidget)
  8. {
  9. ui->setupUi(this);
  10. InitUI();
  11. currentPage=1;
  12. }
  13. RunLogWidget::~RunLogWidget()
  14. {
  15. delete ui;
  16. }
  17. void RunLogWidget::UpdateLog()
  18. {
  19. calculateTotalPages();
  20. loadPage(currentPage);
  21. }
  22. void RunLogWidget::InitUI()
  23. {
  24. connect(ui->prevButton,SIGNAL(clicked()),this,SLOT(slot_upPage()));
  25. connect(ui->nextButton,SIGNAL(clicked()),this,SLOT(slot_downPage()));
  26. QStringList headers = {"序号", "时间", "类型","记录"};
  27. ui->tableWidget->setColumnCount(4);
  28. ui->tableWidget->setHorizontalHeaderLabels(headers);
  29. // 设置自动调整列宽
  30. ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
  31. //ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  32. ui->tableWidget->verticalHeader()->setVisible(false);
  33. ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
  34. ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  35. // QScroller::grabGesture(ui->tableWidget->viewport(), QScroller::TouchGesture);
  36. // QScrollerProperties properties = QScroller::scroller(ui->tableWidget)->scrollerProperties();
  37. // properties.setScrollMetric(QScrollerProperties::DragVelocitySmoothingFactor, 0.6); // 惯性系数
  38. // properties.setScrollMetric(QScrollerProperties::SnapPositionRatio, 0.2); // 弹性效果
  39. // ui->tableWidget->viewport()->setAttribute(Qt::WA_AcceptTouchEvents); // 启用触控事件
  40. }
  41. void RunLogWidget::AddRowData(int nIndex, int nType, QString nTime, QString strMSG)
  42. {
  43. int row = ui->tableWidget->rowCount();
  44. ui->tableWidget->insertRow(row);
  45. QTableWidgetItem *item = new QTableWidgetItem(QString::number(nIndex));
  46. ui->tableWidget->setItem(row, 0, item);
  47. QTableWidgetItem *item1 = new QTableWidgetItem(nTime);
  48. ui->tableWidget->setItem(row, 1, item1);
  49. QTableWidgetItem *item2 = new QTableWidgetItem(QString::number(nType));
  50. ui->tableWidget->setItem(row, 2, item2);
  51. QString strData=strMSG;
  52. strData.replace("$","");
  53. strData.replace("|","");
  54. QTableWidgetItem *item3 = new QTableWidgetItem(strData);
  55. ui->tableWidget->setItem(row, 3, item3);
  56. }
  57. void RunLogWidget::ClearList()
  58. {
  59. ui->tableWidget->clearContents();
  60. ui->tableWidget->setRowCount(0);
  61. }
  62. void RunLogWidget::calculateTotalPages()
  63. {
  64. QSqlQuery query(pdu_Ctrl::instance()->getDB());
  65. QString strExec="SELECT COUNT(*) FROM Table_AlarmManage";
  66. if (query.exec(strExec) && query.next()) {
  67. int totalRecords = query.value(0).toInt();
  68. totalPages = (totalRecords + perPage - 1) / perPage;
  69. }
  70. }
  71. void RunLogWidget::loadPage(int page)
  72. {
  73. QSqlQuery query(pdu_Ctrl::instance()->getDB());
  74. query.prepare(
  75. "SELECT alarmNumber, alarmDate, alarmType, product_id, alarmContent "
  76. "FROM Table_AlarmManage "
  77. "ORDER BY alarmDate DESC "
  78. "LIMIT :limit OFFSET :offset"
  79. );
  80. query.bindValue(":limit", perPage);
  81. query.bindValue(":offset", (page - 1) * perPage);
  82. if (!query.exec()) {
  83. //QMessageBox::warning(this, "Query Error", query.lastError().text());
  84. return;
  85. }
  86. ClearList();
  87. while (query.next()) {
  88. int totalRecords = query.value(0).toInt();
  89. //int totalRecords1 = query.value(1).toInt();
  90. int totalRecords2 = query.value(2).toInt();
  91. QString totalRecords3 = query.value(1).toString();
  92. QString totalRecords4 = query.value(4).toString();
  93. AddRowData(totalRecords,totalRecords2,totalRecords3,totalRecords4);
  94. }
  95. ui->tableWidget->resizeColumnsToContents();
  96. ui->labelPage->setText(QString("Page: %1/%2").arg(page).arg(totalPages));
  97. }
  98. void RunLogWidget::updateButtons()
  99. {
  100. ui->prevButton->setEnabled(currentPage > 1);
  101. ui->nextButton->setEnabled(currentPage < totalPages);
  102. }
  103. void RunLogWidget::slot_upPage()
  104. {
  105. if (currentPage > 1) {
  106. loadPage(--currentPage);
  107. updateButtons();
  108. }
  109. }
  110. void RunLogWidget::slot_downPage()
  111. {
  112. if (currentPage < totalPages) {
  113. loadPage(++currentPage);
  114. updateButtons();
  115. }
  116. }