#include "mainwindow.h" #include "modbus-private.h" #include "ui_mainwindow.h" #include "appproto.h" #include "delegate.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "proto/battery.pb.h" #include "chartpaint.h" #include #include #include #include #include #include #include #include "modbusrtu.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); this->init(); this->setMenuStyle(); m_AppProto = new AppProto; pageBatteryInit(); pageParaSetInit(); pageParaSetInit_alert_value(); pageParaSetInit_alert_delay(); pageParaSetInit_alert_release_value(); pageParaSetInit_alert_release_delay(); pageParaSetInit_alert_dropcurr_rate(); pageParaSetInit_alert_solve_measure(); pageParaSetInit_DIDO_setting(); pageParaSetInit_balance_setting(); pageParaSetInit_SOX_setting(); pageParaSetInit_other_setting(); connect(ui->tabWidget_paraset, SIGNAL(currentChanged(int)), this, SLOT(on_tabChanged(int))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::init() { /* 设置标题 */ setWindowTitle("Battery Monitor"); /* 设置Logo */ setWindowIcon(QIcon(":/Image/icon.png")); /* 读取配置文件 */ ini = new QSettings("config.ini", QSettings::IniFormat); if(QFile::exists("config.ini")) { /* 状态栏显示 */ if(ini->value("Window/ShowStatusbar") == "true") { statusBar()->show(); ui->actionShow_Status_bar->setChecked(true); } else { statusBar()->hide(); ui->actionShow_Status_bar->setChecked(false); } } else{ ini->setValue("System/Language", LANGUAGE_ENG); ini->setValue("Window/ShowStatusbar", true); ini->sync(); } /* 设置初始界面语言 */ if(ini->value("System/Language") == LANGUAGE_ENG) { QTranslator trans; trans.load(":/Language/BatteryMonitor_ENG.qm"); QApplication::installTranslator(&trans); ui->retranslateUi(this); } else if(ini->value("System/Language") == LANGUAGE_CHN) { QTranslator trans; trans.load(":/Language/BatteryMonitor_CHN.qm"); QApplication::installTranslator(&trans); ui->retranslateUi(this); } connect(ui->actionChinese, &QAction::triggered, this, [=]{ ini->setValue("System/Language", LANGUAGE_CHN); ini->sync(); QTranslator trans; trans.load(":/Language/BatteryMonitor_CHN.qm"); QApplication::installTranslator(&trans); ui->retranslateUi(this); }); connect(ui->actionEnglish, &QAction::triggered, this, [=]{ ini->setValue("System/Language", LANGUAGE_ENG); ini->sync(); QTranslator trans; trans.load(":/Language/BatteryMonitor_ENG.qm"); QApplication::installTranslator(&trans); ui->retranslateUi(this); }); /* 状态栏设置 */ statusBarConnectedIcon = new QLabel(); statusBarConnectedType = new QLabel(); statusBarCompany = new QLabel(); statusBarConnectedIcon->setPixmap(QPixmap(QIcon(":/Image/connected1.png").pixmap(QSize(24, 24)))); statusBarConnectedType->setText("RS485"); statusBarCompany->setText("BLUESUN"); ui->statusbar->addWidget(statusBarConnectedIcon); ui->statusbar->addWidget(statusBarConnectedType); ui->statusbar->addPermanentWidget(statusBarCompany); /* 菜单栏设置 */ connect(ui->actionExit, &QAction::triggered, this, [=]{ this->close(); }); connect(ui->actionConnect, &QAction::triggered, this, [=]{ }); connect(ui->actionDisconnect, &QAction::triggered, this, [=]{ }); connect(ui->actionAuto_Connect, &QAction::triggered, this, [=]{ }); connect(ui->actionShow_Status_bar, &QAction::triggered, this, [=]{ if(ini->value("Window/ShowStatusbar") == true) { this->statusBar()->hide(); ui->actionShow_Status_bar->setChecked(false); ini->setValue("Window/ShowStatusbar", false); ini->sync(); } else { this->statusBar()->show(); ui->actionShow_Status_bar->setChecked(true); ini->setValue("Window/ShowStatusbar", true); ini->sync(); } }); /* 设置初始页 */ ui->stackedWidget->setCurrentIndex(PAGE_HOME); /* Debug页面槽函数 */ connect(ui->pageDebugBtnClear, &QPushButton::pressed, this, [=]{ ui->pageDebugTextBrowser->clear(); }); connect(ui->pageDebugCheckBoxSaveLog, &QCheckBox::stateChanged, this, [=]{ if(ui->pageDebugCheckBoxSaveLog->isChecked()) { pageDebugLogFlag = true; QString filename = QFileDialog::getSaveFileName(this, "Save log", "Communication log", "Log Files (*.txt);;All Files (*)"); logFile = new QFile(filename); if (logFile->open(QIODevice::Append | QIODevice::Text)) { } } else { pageDebugLogFlag = false; logFile->close(); } }); //初始化batt bat = new batt(); //初始化绘制柱状图 // chartPat = new ChartPaint(); // //电量充,电量放,时间充,时间放 // // int array[] = {20, 30, 12, 12}; // // int array1[] = {1000, 1200, 500, 600}; // // int array_day_chart[] = {base_info1_45[39], base_info1_45[41], base_info1_45[42], base_info1_45[43]}; // // QChartView *chartView = chartPat->Paint("日", array); // // QChartView *chartView1 = chartPat->Paint("累计", array1); // gridLayout = new QGridLayout(); // QHBoxLayout *hBoxLayout = new QHBoxLayout(); // hBoxLayout->addLayout(gridLayout); // ui->tab_charts->setLayout(hBoxLayout); //绘制单体表格 sglChartInit(7); ui->groupBox_color_sgl->setStyleSheet("QGroupBox { border: none; }"); // ui->scrollArea_sgl_charts->setFrameShape(QFrame::NoFrame); ui->scrollAreaChart->setFrameShape(QFrame::NoFrame); ui->scrollAreaChart->setStyleSheet("background-color: #FFFFFF;"); //设置背景颜色为纯白色 ui->widgetControl->setStyleSheet("background-color: #FFFFFF;"); ui->groupBox->setStyleSheet("background-color: #FFFFFF;"); ui->groupBox_trouble_control->setStyleSheet("background-color: #FFFFFF;"); ui->groupBox_chart->setStyleSheet("background-color: #FFFFFF;"); ui->groupBox_class_color->setStyleSheet("QGroupBox { border: none; }"); ui->BCU_DIDO->setStyleSheet("background-color: #FFFFFF;"); ui->BCU_alarm->setStyleSheet("background-color: #FFFFFF;"); ui->BCU_statisInfo->setStyleSheet("background-color: #FFFFFF;"); ui->BCU_sysInfo->setStyleSheet("background-color: #FFFFFF;"); //设置按钮的提示文本 ui->btnHome->setToolTip("概述信息"); ui->btnBattery->setToolTip("详细信息"); ui->btnParaSet->setToolTip("参数设置"); ui->btnDebug->setToolTip("报文信息"); ui->btnFlash->setToolTip("升级调试"); ui->btnSetup->setToolTip("串口信息"); ui->btnSetup->setStyleSheet("QToolTip { position: absolute; left: 20px; top: 20px; }"); // ui->btnRecord->setToolTip("记录导出"); //设置初始颜色 // ui->close_color->setStyleSheet("QLabel{" // "background-image: url(:/Image/trouble-background-normal.png);" // "border: 1px solid gray;" // "}"); // ui->open_color->setStyleSheet("QLabel{" // "background-image: url(:/Image/trouble-background-default.png);" // "border: 1px solid gray;" // "}"); ui->relay_negative->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->relay_positive->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->relay_precharge->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->relay_disconnector->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->color_trouble_1->setStyleSheet("background-image: url(:/Image/trouble-background-1.png);"); ui->color_trouble_2->setStyleSheet("background-image: url(:/Image/trouble-background-2.png);"); ui->color_trouble_3->setStyleSheet("background-image: url(:/Image/trouble-background-3.png);"); ui->color_trouble_normal->setStyleSheet("background-image: url(:/Image/trouble-background-normal.png);"); ui->color_sgl_high->setStyleSheet("background-color: rgb(255, 0, 0);"); ui->color_sgl_low->setStyleSheet("background-color: rgb(0, 255, 0);"); ui->color_equilibrium->setStyleSheet("background-color: rgb(0, 0, 200);"); ui->color_short_circuit->setStyleSheet("background-color: rgb(255, 165, 0);"); ui->groupBox_color_sgl->setStyleSheet("QGroupBox { border: none; }"); ui->label_all_overVol->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_all_underVol->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_sgl_overVol->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_sgl_underVol->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_sgl_overTempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_sgl_underTempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_over_diff_press->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_over_diff_tempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_over_curr->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_high_vol_trouble->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_mas_slave_com->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_sgl_vol_bar->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_sgl_tem_bar->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_over_soc->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_under_soc->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_insu_leak->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_adhesion->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_prechg_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_over_supply->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_under_supply->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_T1_highTempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_T1_underTempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_T2_highTempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_T2_underTempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_balance_overTempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_reserve1->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_highVol_lock->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_curr_trouble->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_pole_highTempt->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_reserve2->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_reserve3->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_PCS_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_EMS_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_fuse_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_ang_fe_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_EEPROM_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_RTC_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_ADC_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_SD_status->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_feedback_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_heating_overFast->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_limit_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_open_cir_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_epo_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_fire_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_con_ins_overtime->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_reserve4->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_hot_out_of_con->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_bat_box_overVol->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_bat_box_underVol->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_ligntning_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_AC_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_UPS_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_water_flooding_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_guard_worng->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); ui->label_gas_det_wrong->setStyleSheet("QLabel{" "background-image: url(:/Image/trouble-background-default.png);" "border: 1px solid gray;" "}"); // QStandardItemModel *model = new QStandardItemModel(ui->treeViewBCUbmu); // // 创建一级目录项 // QStandardItem *rootItem = new QStandardItem("BCU01"); // // 设置一级目录项的字体为加粗 // QFont boldFont = rootItem->font(); // boldFont.setBold(true); // rootItem->setFont(boldFont); // model->appendRow(rootItem); // ui->tabWidgetBCU->setCurrentIndex(0); // ui->tabWidgetBMU->setCurrentIndex(0); // connect(ui->treeViewBCUbmu, &QTreeView::clicked, [=](const QModelIndex index){ // if(index.parent().isValid()) // { // qDebug() << "BMU" << index.column() << index.row(); // ui->pageBatteryStackWidget->setCurrentIndex(1); // } // else // { // qDebug() << "BCU" << index.column() << index.row(); // ui->pageBatteryStackWidget->setCurrentIndex(0); // } // }); // for (int i = 1; i <= 26; ++i) { // QString bmuName = QString("BMU%1").arg(i); // QStandardItem *bmuItem = new QStandardItem(bmuName); // rootItem->appendRow(bmuItem); // } // ui->treeViewBCUbmu->setModel(model); // ui->treeViewBCUbmu->setHeaderHidden(true); // ui->treeViewBCUbmu->setAnimated(true); // ui->treeViewBCUbmu->expandAll(); // ui->treeViewBCUbmu->setEditTriggers(QAbstractItemView::NoEditTriggers); // ui->treeViewBCUbmu->show(); } void MainWindow::sglChartInit(int bat_count) { ui->tabWidget_sgl_info->setCurrentWidget(ui->tab_vol); QStringList labels = { "Bmu", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "C13", "C14", "C15", "C16", }; //单体电压 QTableWidget *page_paraset_sys_sgl_vol = new QTableWidget(bat_count, 17); page_paraset_sys_sgl_vol->horizontalHeader()->setDefaultSectionSize(40); page_paraset_sys_sgl_vol->verticalHeader()->setDefaultSectionSize(30); page_paraset_sys_sgl_vol->verticalHeader()->setVisible(false); page_paraset_sys_sgl_vol->setHorizontalHeaderLabels(QStringList(labels)); //row的索引比row的值要小1 for (int row = 0; row < page_paraset_sys_sgl_vol->rowCount(); ++row) { for (int col = 0; col < page_paraset_sys_sgl_vol->columnCount(); ++col) { if (col == 0) { QLabel *label = new QLabel(QString::number(row+1), this); label->setAlignment(Qt::AlignCenter); QFont font("黑体", 10); label->setFont(font); label->setFixedSize(40, 30); page_paraset_sys_sgl_vol->setCellWidget(row, col, label); } if(col >= 1) { QLabel *label = new QLabel(this); labelListVol.append(label); // QFont font("黑体", 10); // label->setFont(font); label->setFixedSize(40, 30); page_paraset_sys_sgl_vol->setCellWidget(row, col, label); } } } //单体温度 QTableWidget *page_paraset_sys_sgl_temp = new QTableWidget(bat_count, 17); page_paraset_sys_sgl_temp->horizontalHeader()->setDefaultSectionSize(40); page_paraset_sys_sgl_temp->verticalHeader()->setDefaultSectionSize(30); page_paraset_sys_sgl_temp->verticalHeader()->setVisible(false); page_paraset_sys_sgl_temp->setHorizontalHeaderLabels(QStringList(labels)); //row的索引比row的值要小1 for (int row = 0; row < page_paraset_sys_sgl_temp->rowCount(); ++row) { for (int col = 0; col < page_paraset_sys_sgl_temp->columnCount(); ++col) { if (col == 0) { QLabel *label = new QLabel(QString::number(row+1), this); label->setAlignment(Qt::AlignCenter); QFont font("黑体", 10); label->setFont(font); label->setFixedSize(40, 30); page_paraset_sys_sgl_temp->setCellWidget(row, col, label); } if(col >= 1) { QLabel *label = new QLabel(this); labelListTempt.append(label); // QFont font("黑体", 10); // label->setFont(font); label->setFixedSize(40, 30); page_paraset_sys_sgl_temp->setCellWidget(row, col, label); } } } QHBoxLayout *hBoxLayout_vol = new QHBoxLayout(); QHBoxLayout *hBoxLayout_tempt = new QHBoxLayout(); hBoxLayout_vol->addWidget(page_paraset_sys_sgl_vol); hBoxLayout_tempt->addWidget(page_paraset_sys_sgl_temp); ui->tab_vol->setLayout(hBoxLayout_vol); ui->tab_tempt->setLayout(hBoxLayout_tempt); } void MainWindow::setMenuStyle() { /* 设置菜单按钮样式表 */ connect(ui->btnHome, &QPushButton::pressed, this, [=]{ ui->stackedWidget->setCurrentIndex(PAGE_HOME); ui->btnHome->setStyleSheet("#btnHome{" "background-image: url(:/Image/home2.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnBattery->setStyleSheet("#btnBattery{" "background-image: url(:/Image/battery.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnBattery::hover{" "background-image: url(:/Image/battery1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" ); ui->btnParaSet->setStyleSheet("#btnParaSet{" "background-image: url(:/Image/paraSet.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnParaSet::hover{" "background-image: url(:/Image/paraSet1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnDebug->setStyleSheet("#btnDebug{" "background-image: url(:/Image/debug.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnDebug::hover{" "background-image: url(:/Image/debug1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnFlash->setStyleSheet("#btnFlash{" "background-image: url(:/Image/hardware-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnFlash::hover{" "background-image: url(:/Image/hardware-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnSetup->setStyleSheet("#btnSetup{" "background-image: url(:/Image/advance-set-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnSetup::hover{" "background-image: url(:/Image/advance-set-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); // ui->btnRecord->setStyleSheet("#btnRecord{" // "background-image: url(:/Image/record-out-black.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnRecord::hover{" // "background-image: url(:/Image/record-out-gray.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); }); connect(ui->btnBattery, &QPushButton::pressed, this, [=]{ ui->stackedWidget->setCurrentIndex(PAGE_BATTERY); ui->btnBattery->setStyleSheet("#btnBattery{" "background-image: url(:/Image/battery2.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnHome->setStyleSheet("#btnHome{" "background-image: url(:/Image/home.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnHome::hover{" "background-image: url(:/Image/home1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnParaSet->setStyleSheet("#btnParaSet{" "background-image: url(:/Image/paraSet.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnParaSet::hover{" "background-image: url(:/Image/paraSet1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnDebug->setStyleSheet("#btnDebug{" "background-image: url(:/Image/debug.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnDebug::hover{" "background-image: url(:/Image/debug1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnFlash->setStyleSheet("#btnFlash{" "background-image: url(:/Image/hardware-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnFlash::hover{" "background-image: url(:/Image/hardware-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnSetup->setStyleSheet("#btnSetup{" "background-image: url(:/Image/advance-set-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnSetup::hover{" "background-image: url(:/Image/advance-set-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); // ui->btnRecord->setStyleSheet("#btnRecord{" // "background-image: url(:/Image/record-out-black.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnRecord::hover{" // "background-image: url(:/Image/record-out-gray.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); }); connect(ui->btnParaSet, &QPushButton::pressed, this, [=]{ ui->stackedWidget->setCurrentIndex(PAGE_PARASET); ui->btnParaSet->setStyleSheet("#btnParaSet{" "background-image: url(:/Image/paraSet2.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnHome->setStyleSheet("#btnHome{" "background-image: url(:/Image/home.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnHome::hover{" "background-image: url(:/Image/home1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnBattery->setStyleSheet("#btnBattery{" "background-image: url(:/Image/battery.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnBattery::hover{" "background-image: url(:/Image/battery1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnDebug->setStyleSheet("#btnDebug{" "background-image: url(:/Image/debug.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnDebug::hover{" "background-image: url(:/Image/debug1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnFlash->setStyleSheet("#btnFlash{" "background-image: url(:/Image/hardware-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnFlash::hover{" "background-image: url(:/Image/hardware-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnSetup->setStyleSheet("#btnSetup{" "background-image: url(:/Image/advance-set-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnSetup::hover{" "background-image: url(:/Image/advance-set-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); // ui->btnRecord->setStyleSheet("#btnRecord{" // "background-image: url(:/Image/record-out-black.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnRecord::hover{" // "background-image: url(:/Image/record-out-gray.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); }); connect(ui->btnDebug, &QPushButton::pressed, this, [=]{ ui->stackedWidget->setCurrentIndex(PAGE_DEBUG); ui->btnDebug->setStyleSheet("#btnDebug{" "background-image: url(:/Image/debug2.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnHome->setStyleSheet("#btnHome{" "background-image: url(:/Image/home.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnHome::hover{" "background-image: url(:/Image/home1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnBattery->setStyleSheet("#btnBattery{" "background-image: url(:/Image/battery.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnBattery::hover{" "background-image: url(:/Image/battery1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnParaSet->setStyleSheet("#btnParaSet{" "background-image: url(:/Image/paraSet.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnParaSet::hover{" "background-image: url(:/Image/paraSet1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnFlash->setStyleSheet("#btnFlash{" "background-image: url(:/Image/hardware-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnFlash::hover{" "background-image: url(:/Image/hardware-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnSetup->setStyleSheet("#btnSetup{" "background-image: url(:/Image/advance-set-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnSetup::hover{" "background-image: url(:/Image/advance-set-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); // ui->btnRecord->setStyleSheet("#btnRecord{" // "background-image: url(:/Image/record-out-black.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnRecord::hover{" // "background-image: url(:/Image/record-out-gray.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); }); connect(ui->btnFlash, &QPushButton::pressed, this, [=]{ ui->stackedWidget->setCurrentIndex(PAGE_FLASH); ui->btnFlash->setStyleSheet("#btnFlash{" "background-image: url(:/Image/hardware-line2.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnHome->setStyleSheet("#btnHome{" "background-image: url(:/Image/home.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnHome::hover{" "background-image: url(:/Image/home1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnBattery->setStyleSheet("#btnBattery{" "background-image: url(:/Image/battery.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnBattery::hover{" "background-image: url(:/Image/battery1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnParaSet->setStyleSheet("#btnParaSet{" "background-image: url(:/Image/paraSet.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnParaSet::hover{" "background-image: url(:/Image/paraSet1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnDebug->setStyleSheet("#btnDebug{" "background-image: url(:/Image/debug.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnDebug::hover{" "background-image: url(:/Image/debug1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); ui->btnSetup->setStyleSheet("#btnSetup{" "background-image: url(:/Image/advance-set-line.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}" "#btnSetup::hover{" "background-image: url(:/Image/advance-set-line1.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); // ui->btnRecord->setStyleSheet("#btnRecord{" // "background-image: url(:/Image/record-out-black.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnRecord::hover{" // "background-image: url(:/Image/record-out-gray.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); }); // connect(ui->btnRecord, &QPushButton::pressed, this, [=]{ // ui->stackedWidget->setCurrentWidget(ui->pageRecord); // ui->btnRecord->setStyleSheet("#btnRecord{" // "background-image: url(:/Image/record-out-green.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); // ui->btnHome->setStyleSheet("#btnHome{" // "background-image: url(:/Image/home.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnHome::hover{" // "background-image: url(:/Image/home1.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); // ui->btnBattery->setStyleSheet("#btnBattery{" // "background-image: url(:/Image/battery.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnBattery::hover{" // "background-image: url(:/Image/battery1.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // ); // ui->btnParaSet->setStyleSheet("#btnParaSet{" // "background-image: url(:/Image/paraSet.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnParaSet::hover{" // "background-image: url(:/Image/paraSet1.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); // ui->btnDebug->setStyleSheet("#btnDebug{" // "background-image: url(:/Image/debug.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnDebug::hover{" // "background-image: url(:/Image/debug1.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); // ui->btnFlash->setStyleSheet("#btnFlash{" // "background-image: url(:/Image/hardware-line.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnFlash::hover{" // "background-image: url(:/Image/hardware-line1.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); // ui->btnSetup->setStyleSheet("#btnSetup{" // "background-image: url(:/Image/advance-set-line.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}" // "#btnSetup::hover{" // "background-image: url(:/Image/advance-set-line1.png);" // "background-repeat: no-repeat;" // "background-position: center;" // "background-color: rgba(255, 255, 255, 0);" // "}"); // }); connect(ui->btnSetup, &QPushButton::pressed, this, [=]{ emit showLogin(); ui->btnSetup->setStyleSheet("#btnSetup{" "background-image: url(:/Image/advance-set-line2.png);" "background-repeat: no-repeat;" "background-position: center;" "background-color: rgba(255, 255, 255, 0);" "}"); }); ui->btn_close_neg->setStyleSheet("QPushButton { background-color: #87CEFA; color: white; }" "QPushButton:hover { background-color: #77B5D6; color: white; }"); ui->btn_close_pos->setStyleSheet("QPushButton { background-color: #87CEFA; color: white; }" "QPushButton:hover { background-color: #77B5D6; color: white; }"); ui->btn_close_prechg->setStyleSheet("QPushButton { background-color: #87CEFA; color: white; }" "QPushButton:hover { background-color: #77B5D6; color: white; }"); ui->btn_open_prechg->setStyleSheet("QPushButton { background-color: #87CEFA; color: white; }" "QPushButton:hover { background-color: #77B5D6; color: white; }"); ui->btn_open_neg->setStyleSheet("QPushButton { background-color: #87CEFA; color: white; }" "QPushButton:hover { background-color: #77B5D6; color: white; }"); ui->btn_open_pos->setStyleSheet("QPushButton { background-color: #87CEFA; color: white; }" "QPushButton:hover { background-color: #77B5D6; color: white; }"); } void MainWindow::slot_pageDebugDisplayMessage(QByteArray byteArray, int dataType) { if(ui->pageDebugCheckBoxDisplay->isChecked() == true) { QString timeStr = QString(QDateTime::currentDateTime().toString("[yyyy-MM-dd hh:mm:ss.zzz] ")); QString tmpStr; QString showStr; for(int i = 0; i < byteArray.size(); i++) { tmpStr += QString("%1 ").arg((quint8)byteArray.at(i), 2, 16, QChar('0')); // QString hexString = QString::number(tmpStr, 16); // qDebug() << "recvdata:" << tmpStr.toInt(&ok, 16); } if(dataType == TypeRecvData) { if(ui->pageDebugCheckBoxStarmp->isChecked()) { showStr = timeStr + "Rx: " + tmpStr; } else { showStr = "Rx: " + tmpStr; } if(pageDebugLogFlag == true) { if(logFile->isOpen()) { QTextStream textStream(logFile); textStream << timeStr + "Rx: " + tmpStr + '\n'; } } } else if(dataType == TypeSendData) { if(ui->pageDebugCheckBoxStarmp->isChecked()) { showStr = timeStr + "Tx: " + tmpStr; } else { showStr = "Tx: " + tmpStr; } if(pageDebugLogFlag == true) { if(logFile->isOpen()) { QTextStream textStream(logFile); textStream << timeStr + "Rx: " + tmpStr + '\n'; } } } ui->pageDebugTextBrowser->append(showStr); } } void MainWindow::slot_pageHomeSglDataMessage(QByteArray byteArray, int dataType) { if(dataType == TypeRecvData) { QList result_int; bool ok; for (int i = 3; i < byteArray.size(); i += 2) { quint8 firstByte = (i < byteArray.size())? byteArray.at(i) : 0; quint8 secondByte = (i + 1 < byteArray.size())? byteArray.at(i + 1) : 0; QString hexValue = QString("%1%2") .arg(QString::number(firstByte, 16).rightJustified(2, '0')) .arg(QString::number(secondByte, 16).rightJustified(2, '0')); result_int += hexValue.toInt(&ok, 16); } sgl_vol_info = result_int; sgl_vol_info.removeLast(); sgl_info_process(sgl_vol_info, labelListVol); } } void MainWindow::slot_pageHomeSglTempt(QByteArray byteArray, int dataType) { if(dataType == TypeRecvData) { QList result_int; bool ok; for (int i = 3; i < byteArray.size(); i += 2) { quint8 firstByte = (i < byteArray.size())? byteArray.at(i) : 0; quint8 secondByte = (i + 1 < byteArray.size())? byteArray.at(i + 1) : 0; QString hexValue = QString("%1%2") .arg(QString::number(firstByte, 16).rightJustified(2, '0')) .arg(QString::number(secondByte, 16).rightJustified(2, '0')); result_int += hexValue.toInt(&ok, 16); } sgl_tempt_info = result_int; sgl_tempt_info.removeLast(); sgl_info_process(sgl_tempt_info, labelListTempt); } } void MainWindow::slot_pageHomeBaseInfo1_45(QByteArray byteArray, int dataType) { if(dataType == TypeRecvData) { // qDebug() << "33333333333333333333333333333333"; QList result_int; bool ok; for (int i = 3; i < byteArray.size(); i += 2) { quint8 firstByte = (i < byteArray.size())? byteArray.at(i) : 0; quint8 secondByte = (i + 1 < byteArray.size())? byteArray.at(i + 1) : 0; QString hexValue = QString("%1%2") .arg(QString::number(firstByte, 16).rightJustified(2, '0')) .arg(QString::number(secondByte, 16).rightJustified(2, '0')); result_int += hexValue.toInt(&ok, 16); } base_info1_45 = result_int; // qDebug() << base_info1_45; ui->volValue->setText(QString::number(base_info1_45[0])); ui->batVal_vol_all->setText(QString::number(base_info1_45[0])); ui->currValue->setText(QString::number(base_info1_45[1])); ui->batVal_cur_all->setText(QString::number(base_info1_45[1])); ui->batVal_soc->setText(QString::number(base_info1_45[2])); ui->widgetBatt->setValue(base_info1_45[2]); ui->batVal_soh->setText(QString::number(base_info1_45[3])); ui->batVal_soe->setText(QString::number(base_info1_45[4])); ui->batVal_rated_vol->setText(QString::number(base_info1_45[5])); ui->batVal_rated_cap->setText(QString::number(base_info1_45[6])); ui->batVal_remain_cap->setText(QString::number(base_info1_45[7])); ui->batVal_bat_count->setText(QString::number(base_info1_45[12])); battery_count = base_info1_45[12]; ui->batVal_tempt_count->setText(QString::number(base_info1_45[14])); ui->batVal_max_dischg_cur->setText(QString::number(base_info1_45[16])); ui->batVal_max_dischg_pwer->setText(QString::number(base_info1_45[17])); ui->batVal_max_chg_cur->setText(QString::number(base_info1_45[18])); ui->batVal_max_chg_pwer->setText(QString::number(base_info1_45[19])); ui->batVal_pos_insu_res->setText(QString::number(base_info1_45[20])); ui->batVal_neg_insu_res->setText(QString::number(base_info1_45[21])); ui->batVal_sgl_vol_avg->setText(QString::number(base_info1_45[22])); ui->batVal_sgl_max_press_diff->setText(QString::number(base_info1_45[23])); ui->batVal_max_sgl_vol->setText(QString::number(base_info1_45[24])); ui->batVal_max_sgl_vol_bmu_num->setText(QString::number(base_info1_45[25])); ui->batVal_max_sgl_vol_serial_num->setText(QString::number(base_info1_45[26])); ui->batVal_min_sgl_vol->setText(QString::number(base_info1_45[27])); ui->batVal_min_sgl_vol_bmu_num->setText(QString::number(base_info1_45[28])); ui->batVal_min_sgl_vol_serial_num->setText(QString::number(base_info1_45[29])); ui->batVal_sgl_temp_avg->setText(QString::number(base_info1_45[30])); ui->batVal_sgl_max_temp_diff->setText(QString::number(base_info1_45[31])); ui->batVal_max_sgl_temp->setText(QString::number(base_info1_45[32])); ui->batVal_max_sgl_temp_bmu_num->setText(QString::number(base_info1_45[33])); ui->batVal_max_sgl_temp_serial_num->setText(QString::number(base_info1_45[34])); ui->batVal_min_sgl_temp->setText(QString::number(base_info1_45[35])); ui->batVal_min_sgl_temp_bmu_num->setText(QString::number(base_info1_45[36])); ui->batVal_min_sgl_temp_serial_num->setText(QString::number(base_info1_45[37])); ui->batVal_day_chg_cap->setText(QString::number(base_info1_45[38])); ui->batVal_day_chg_ele->setText(QString::number(base_info1_45[39])); ui->batVal_day_dischg_cap->setText(QString::number(base_info1_45[40])); ui->batVal_day_dischg_ele->setText(QString::number(base_info1_45[41])); ui->batVal_day_chg_time->setText(QString::number(base_info1_45[42])); ui->batVal_day_dischg_time->setText(QString::number(base_info1_45[43])); ui->batVal_leiji_chg_cap->setText(QString::number(base_info1_45[44])); // int array_day_chart[] = {base_info1_45[39], base_info1_45[41], base_info1_45[42], base_info1_45[43]}; // QChartView *chartView_day = chartPat->Paint("日", array_day_chart); // chartView_day->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // gridLayout->addWidget(chartView_day, 0, 0); // ui->batVal_leiji_chg_ele->setText(QString::number(base_info1_45[46])); } } void MainWindow::slot_pageHomeBaseInfo57_78(QByteArray byteArray, int dataType) { if(dataType == TypeRecvData) { QList result_int; bool ok; for (int i = 3; i < byteArray.size(); i += 2) { quint8 firstByte = (i < byteArray.size())? byteArray.at(i) : 0; quint8 secondByte = (i + 1 < byteArray.size())? byteArray.at(i + 1) : 0; QString hexValue = QString("%1%2") .arg(QString::number(firstByte, 16).rightJustified(2, '0')) .arg(QString::number(secondByte, 16).rightJustified(2, '0')); result_int += hexValue.toInt(&ok, 16); } base_info57_78 = result_int; ui->batVal_bcu_work_status->setText(QString::number(base_info57_78[0])); ui->batVal_relay_neg_status->setText(QString::number(base_info57_78[1])); ui->batVal_relay_pos_status->setText(QString::number(base_info57_78[2])); ui->batVal_relay_dischg_status->setText(QString::number(base_info57_78[3])); ui->batVal_relay_chg_status->setText(QString::number(base_info57_78[4])); ui->batVal_relay_prechg_status->setText(QString::number(base_info57_78[5])); ui->batVal_relay_status->setText(QString::number(base_info57_78[6])); ui->batVal_on_off_status->setText(QString::number(base_info57_78[7])); ui->batVal_trouble_status->setText(QString::number(base_info57_78[8])); /*66~73 故障1~8的故障等级 故障9~16的故障等级 故障17~24的故障等级 故障25~32的故障等级 故障33~40的故障等级 故障41~48的故障等级 故障49~56的故障等级 故障57~64的故障等级 */ ui->batVal_bat_cycle_number->setText(QString::number(base_info57_78[17])); ui->batVal_max_chg_cell_vol->setText(QString::number(base_info57_78[18])); ui->batVal_min_chg_cell_vol->setText(QString::number(base_info57_78[19])); /*77,78 最大允许充电总压 最小允许放电总压 */ } } void MainWindow::slot_pageHomeBaseInfo83_106(QByteArray byteArray, int dataType) { if(dataType == TypeRecvData) { QList result_int; bool ok; for (int i = 3; i < byteArray.size(); i += 2) { quint8 firstByte = (i < byteArray.size())? byteArray.at(i) : 0; quint8 secondByte = (i + 1 < byteArray.size())? byteArray.at(i + 1) : 0; QString hexValue = QString("%1%2") .arg(QString::number(firstByte, 16).rightJustified(2, '0')) .arg(QString::number(secondByte, 16).rightJustified(2, '0')); result_int += hexValue.toInt(&ok, 16); } base_info83_106 = result_int; ui->batVal_samp_press_all->setText(QString::number(base_info83_106[0])); /*84~95 一级故障(故障位1~16) 一级故障(故障位17~32) 一级故障(故障位33~48) 一级故障(故障位49~64) 二级故障(故障位1~16) 二级故障(故障位17~32) 二级故障(故障位33~48) 二级故障(故障位49~64) 三级故障(故障位1~16) 三级故障(故障位17~32) 三级故障(故障位33~48) 三级故障(故障位49~64) */ ui->batVal_state_machine->setText(QString::number(base_info83_106[13])); ui->batVal_chg_satus->setText(QString::number(base_info83_106[14])); ui->batVal_dischg_satus->setText(QString::number(base_info83_106[15])); ui->batVal_high_press_close_status->setText(QString::number(base_info83_106[16])); ui->batVal_fan_status->setText(QString::number(base_info83_106[17])); ui->batVal_all_alert->setText(QString::number(base_info83_106[18])); ui->batVal__trouble_all->setText(QString::number(base_info83_106[19])); /*103~106 BCU地址 BCU主回路状态 BCU回路闭合指令 BCU是否允许闭合主回路 */ } } void MainWindow::slot_pageHomeBaseInfo47_49_51_53_55(QList byteArray, int dataType) { if(dataType == TypeRecvData) { // QList result_int; // bool ok; // for (int i = 3; i < byteArray.size(); i += 2) { // quint8 firstByte = (i < byteArray.size())? byteArray.at(i) : 0; // quint8 secondByte = (i + 1 < byteArray.size())? byteArray.at(i + 1) : 0; // QString hexValue = QString("%1%2") // .arg(QString::number(firstByte, 16).rightJustified(2, '0')) // .arg(QString::number(secondByte, 16).rightJustified(2, '0')); // result_int += hexValue.toInt(&ok, 16); // } // for (int i = 0; i < byteArray.size(); i += 2) { // uint16_t value; // memcpy(&value, byteArray.data() + i, 2); // base_info47_49_51_53_55.append(value); // // qDebug() << "Value: " << value; // } // base_info47_49_51_53_55 = result_int; // qDebug() << byteArray; ui->batVal_leiji_chg_ele->setText(QString::number(byteArray[0])); ui->batVal_leiji_dischg_cap->setText(QString::number(byteArray[1])); ui->batVal_leiji_dischg_ele->setText(QString::number(byteArray[2])); ui->batVal_leiji_chg_time->setText(QString::number(byteArray[3])); ui->batVal_leiji_dischg_time->setText(QString::number(byteArray[4])); // int array_leiji_chart[] = {byteArray[0], byteArray[2], byteArray[3], byteArray[4]}; // QChartView *chartView_leiji = chartPat->Paint("累计", array_leiji_chart); // chartView_leiji->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // chartView_leiji->setSizeAdjustPolicy(QChartView::AdjustToContents); // gridLayout->addWidget(chartView_leiji, 0, 1); } } void MainWindow::sgl_info_process(QList sgl_info, QList labelList) { ui->tabWidget_sgl_info->update(); int MaxIndex = findMaxIndex(sgl_info); int MinIndex = findMinIndex(sgl_info); /* ui->color_sgl_high->setStyleSheet("background-color: rgb(255, 0, 0);"); ui->color_sgl_low->setStyleSheet("background-color: rgb(0, 255, 0);"); ui->color_equilibrium->setStyleSheet("background-color: rgb(0, 0, 200);"); ui->color_short_circuit->setStyleSheet("background-color: rgb(255, 165, 0);"); */ for (int i=0;i < sgl_info.size(); i++) { labelList[i]->setText(QString::number(sgl_info[i])); labelList[i]->setAlignment(Qt::AlignCenter); QFont font("黑体", 10); labelList[i]->setFont(font); if(i == MaxIndex) { labelList[MaxIndex]->setStyleSheet("QLabel{background-color:rgb(255, 0, 0);}"); } else if (i == MinIndex) { labelList[MinIndex]->setStyleSheet("QLabel{background-color:rgb(0, 255, 0);}"); } else { labelList[i]->setStyleSheet("QLabel{background-color:rgb(255, 255, 255);}"); } } } int MainWindow::findMaxIndex(QList sgl_info) { if (sgl_info.isEmpty()) return -1; int maxValue = sgl_info.at(0); int maxIndex = 0; for (int i = 1; i < sgl_info.size(); ++i) { int value = sgl_info.at(i); if (value > maxValue) { maxValue = value; maxIndex = i; } } return maxIndex; } int MainWindow::findMinIndex(QList sgl_info) { if (sgl_info.isEmpty()) return -1; int minValue = sgl_info.at(0); int minIndex = 0; for (int i = 1; i < sgl_info.size(); ++i) { int value = sgl_info.at(i); if (value < minValue) { minValue = value; minIndex = i; } } return minIndex; } void MainWindow::pageBatteryInit() { } void MainWindow::pageParaSetInit() { ui->tabWidget_paraset->setCurrentIndex(0); ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_paraset_sys->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_paraset_sys->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_paraset_sys->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_paraset_sys->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_paraset_sys->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_paraset_sys->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_paraset_sys->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_paraset_sys->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_paraset_sys->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_paraset_sys->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_paraset_sys->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_paraset_sys->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_paraset_sys->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_paraset_sys->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_paraset_sys->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_paraset_sys->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_paraset_sys->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_paraset_sys->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_paraset_sys->horizontalHeader()->setSectionsClickable(false); ui->tableView_paraset_sys->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_paraset_sys->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_paraset_sys->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_paraset_sys->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_paraset_sys->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_paraset_sys->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_paraset_sys->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_paraset_sys->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_paraset_sys->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { qDebug() << "item size: 11111111111111" << item.itemattr_size(); for(int i = 0; i < item.itemattr_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.itemattr(i).name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.itemattr(i).value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.itemattr(i).introduce().c_str())); } } } // qDebug() << "item name:11111111111111" << item.itemattr(41).name().c_str() << "item value:" << item.itemattr(157).value() << "item introduce:" << // item.itemattr(157).introduce().c_str() << "item scale" << item.itemattr(157).scale(); // qDebug() << "item name:11111111111111" << item.itemattr(42).name().c_str() << "item value:" << item.itemattr(161).value() << "item introduce:" << // item.itemattr(161).introduce().c_str() << "item scale" << item.itemattr(161).scale(); // qDebug() << "item name:11111111111111" << item.itemattr(68).name().c_str() << "item value:" << item.itemattr(157).value() << "item introduce:" << // item.itemattr(157).introduce().c_str() << "item scale" << item.itemattr(157).scale(); // qDebug() << "item name:11111111111111" << item.itemattr(75).name().c_str() << "item value:" << item.itemattr(161).value() << "item introduce:" << // item.itemattr(161).introduce().c_str() << "item scale" << item.itemattr(161).scale(); // qDebug() << "item name:11111111111111" << item.itemattr(78).name().c_str() << "item value:" << item.itemattr(157).value() << "item introduce:" << // item.itemattr(157).introduce().c_str() << "item scale" << item.itemattr(157).scale(); // qDebug() << "item name:11111111111111" << item.itemattr(85).name().c_str() << "item value:" << item.itemattr(161).value() << "item introduce:" << // item.itemattr(161).introduce().c_str() << "item scale" << item.itemattr(161).scale(); finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_alert_value() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_paraset_alert_value->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_paraset_alert_value->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_paraset_alert_value->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_paraset_alert_value->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_paraset_alert_value->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_paraset_alert_value->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_paraset_alert_value->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_paraset_alert_value->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_paraset_alert_value->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_paraset_alert_value->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_paraset_alert_value->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_paraset_alert_value->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_paraset_alert_value->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_paraset_alert_value->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_paraset_alert_value->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_paraset_alert_value->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_paraset_alert_value->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_paraset_alert_value->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_paraset_alert_value->horizontalHeader()->setSectionsClickable(false); ui->tableView_paraset_alert_value->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_paraset_alert_value->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_paraset_alert_value->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_paraset_alert_value->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_paraset_alert_value->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_paraset_alert_value->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_value->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_value->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_value->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { // qDebug() << "item name:" << item.itemattr(0).name().c_str() << "item value:" << item.itemattr(0).value() << "item introduce:" << // item.itemattr(0).introduce().c_str() << "item scale" << item.itemattr(0).scale(); // qDebug() << "item size:" << item.itemattr_size(); for(int i = 0; i < item.itemattr_alert_value_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_value(i)->name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.mutable_itemattr_alert_value(i)->value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_value(i)->introduce().c_str())); } } } finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_alert_delay() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_paraset_alert_delay->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_paraset_alert_delay->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_paraset_alert_delay->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_paraset_alert_delay->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_paraset_alert_delay->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_paraset_alert_delay->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_paraset_alert_delay->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_paraset_alert_delay->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_paraset_alert_delay->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_paraset_alert_delay->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_paraset_alert_delay->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_paraset_alert_delay->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_paraset_alert_delay->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_paraset_alert_delay->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_paraset_alert_delay->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_paraset_alert_delay->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_paraset_alert_delay->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_paraset_alert_delay->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_paraset_alert_delay->horizontalHeader()->setSectionsClickable(false); ui->tableView_paraset_alert_delay->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_paraset_alert_delay->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_paraset_alert_delay->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_paraset_alert_delay->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_paraset_alert_delay->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_paraset_alert_delay->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_delay->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_delay->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_delay->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for(int i = 0; i < item.itemattr_alert_delay_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_delay(i)->name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.mutable_itemattr_alert_delay(i)->value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_delay(i)->introduce().c_str())); } } } finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_alert_release_value() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_paraset_alert_release_value->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_paraset_alert_release_value->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_paraset_alert_release_value->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_paraset_alert_release_value->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_paraset_alert_release_value->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_paraset_alert_release_value->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_paraset_alert_release_value->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_paraset_alert_release_value->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_paraset_alert_release_value->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_paraset_alert_release_value->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_paraset_alert_release_value->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_paraset_alert_release_value->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_paraset_alert_release_value->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_paraset_alert_release_value->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_paraset_alert_release_value->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_paraset_alert_release_value->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_paraset_alert_release_value->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_paraset_alert_release_value->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_paraset_alert_release_value->horizontalHeader()->setSectionsClickable(false); ui->tableView_paraset_alert_release_value->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_paraset_alert_release_value->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_paraset_alert_release_value->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_paraset_alert_release_value->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_paraset_alert_release_value->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_paraset_alert_release_value->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_release_value->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_release_value->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_release_value->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for(int i = 0; i < item.itemattr_alert_release_value_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_release_value(i)->name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.mutable_itemattr_alert_release_value(i)->value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_release_value(i)->introduce().c_str())); } } } finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_alert_release_delay() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_paraset_alert_release_delay->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_paraset_alert_release_delay->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_paraset_alert_release_delay->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_paraset_alert_release_delay->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_paraset_alert_release_delay->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_paraset_alert_release_delay->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_paraset_alert_release_delay->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_paraset_alert_release_delay->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_paraset_alert_release_delay->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_paraset_alert_release_delay->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_paraset_alert_release_delay->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_paraset_alert_release_delay->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_paraset_alert_release_delay->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_paraset_alert_release_delay->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_paraset_alert_release_delay->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_paraset_alert_release_delay->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_paraset_alert_release_delay->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_paraset_alert_release_delay->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_paraset_alert_release_delay->horizontalHeader()->setSectionsClickable(false); ui->tableView_paraset_alert_release_delay->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_paraset_alert_release_delay->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_paraset_alert_release_delay->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_paraset_alert_release_delay->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_paraset_alert_release_delay->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_paraset_alert_release_delay->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_release_delay->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_release_delay->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_release_delay->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for(int i = 0; i < item.itemattr_alert_release_delay_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_release_delay(i)->name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.mutable_itemattr_alert_release_delay(i)->value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_release_delay(i)->introduce().c_str())); } } } finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_alert_dropcurr_rate() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_paraset_alert_dropcurr_rate->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_paraset_alert_dropcurr_rate->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_paraset_alert_dropcurr_rate->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_paraset_alert_dropcurr_rate->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_paraset_alert_dropcurr_rate->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_paraset_alert_dropcurr_rate->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_paraset_alert_dropcurr_rate->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_paraset_alert_dropcurr_rate->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_paraset_alert_dropcurr_rate->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_paraset_alert_dropcurr_rate->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_paraset_alert_dropcurr_rate->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_paraset_alert_dropcurr_rate->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_paraset_alert_dropcurr_rate->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_paraset_alert_dropcurr_rate->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_paraset_alert_dropcurr_rate->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_paraset_alert_dropcurr_rate->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_paraset_alert_dropcurr_rate->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_paraset_alert_dropcurr_rate->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_paraset_alert_dropcurr_rate->horizontalHeader()->setSectionsClickable(false); ui->tableView_paraset_alert_dropcurr_rate->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_paraset_alert_dropcurr_rate->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_paraset_alert_dropcurr_rate->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_paraset_alert_dropcurr_rate->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_paraset_alert_dropcurr_rate->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_paraset_alert_dropcurr_rate->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_dropcurr_rate->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_dropcurr_rate->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_dropcurr_rate->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for(int i = 0; i < item.itemattr_alert_dropcurr_rate_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_dropcurr_rate(i)->name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.mutable_itemattr_alert_dropcurr_rate(i)->value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_dropcurr_rate(i)->introduce().c_str())); } } } finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_alert_solve_measure() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_paraset_alert_solve_mease->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_paraset_alert_solve_mease->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_paraset_alert_solve_mease->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_paraset_alert_solve_mease->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_paraset_alert_solve_mease->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_paraset_alert_solve_mease->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_paraset_alert_solve_mease->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_paraset_alert_solve_mease->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_paraset_alert_solve_mease->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_paraset_alert_solve_mease->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_paraset_alert_solve_mease->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_paraset_alert_solve_mease->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_paraset_alert_solve_mease->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_paraset_alert_solve_mease->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_paraset_alert_solve_mease->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_paraset_alert_solve_mease->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_paraset_alert_solve_mease->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_paraset_alert_solve_mease->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_paraset_alert_solve_mease->horizontalHeader()->setSectionsClickable(false); ui->tableView_paraset_alert_solve_mease->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_paraset_alert_solve_mease->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_paraset_alert_solve_mease->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_paraset_alert_solve_mease->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_paraset_alert_solve_mease->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_paraset_alert_solve_mease->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_solve_mease->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_solve_mease->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_paraset_alert_solve_mease->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for(int i = 0; i < item.itemattr_alert_solve_measure_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_solve_measure(i)->name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.mutable_itemattr_alert_solve_measure(i)->value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.mutable_itemattr_alert_solve_measure(i)->introduce().c_str())); } } } finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_DIDO_setting() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_DIDO_setting->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_DIDO_setting->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_DIDO_setting->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_DIDO_setting->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_DIDO_setting->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_DIDO_setting->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_DIDO_setting->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_DIDO_setting->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_DIDO_setting->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_DIDO_setting->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_DIDO_setting->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_DIDO_setting->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_DIDO_setting->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_DIDO_setting->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_DIDO_setting->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_DIDO_setting->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_DIDO_setting->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_DIDO_setting->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_DIDO_setting->horizontalHeader()->setSectionsClickable(false); ui->tableView_DIDO_setting->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_DIDO_setting->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_DIDO_setting->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_DIDO_setting->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_DIDO_setting->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_DIDO_setting->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_DIDO_setting->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_DIDO_setting->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_DIDO_setting->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for(int i=0; i < item.itemattr_dido_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.itemattr_dido(i).name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.itemattr_dido(i).value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.itemattr_dido(i).introduce().c_str())); } } } // int model_index = 0; // for(int i = 105; i <= 144; i++) { // for(int j = 0; j < 4; j++) { // if(j == 1) { // model->setItem(model_index, j, new QStandardItem(item.itemattr(i).name().c_str())); // } // else if(j == 2) { // model->setItem(model_index, j, new QStandardItem(QString::number(item.itemattr(i).value()))); // } // else if(j == 3) { // model->setItem(model_index, j, new QStandardItem(item.itemattr(i).introduce().c_str())); // } // } // model_index++; // } // model_index = 0; finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_balance_setting() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_balance_setting->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_balance_setting->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_balance_setting->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_balance_setting->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_balance_setting->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_balance_setting->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_balance_setting->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_balance_setting->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_balance_setting->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_balance_setting->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_balance_setting->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_balance_setting->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_balance_setting->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_balance_setting->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_balance_setting->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_balance_setting->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_balance_setting->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_balance_setting->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_balance_setting->horizontalHeader()->setSectionsClickable(false); ui->tableView_balance_setting->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_balance_setting->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_balance_setting->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_balance_setting->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_balance_setting->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_balance_setting->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_balance_setting->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_balance_setting->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_balance_setting->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for(int i = 0; i< item.itemattr_balance_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.itemattr_balance(i).name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.itemattr_balance(i).value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.itemattr_balance(i).introduce().c_str())); } } } // int model_index = 0; // for(int i = 157; i <= 161; i++) { // for(int j = 0; j < 4; j++) { // if(j == 1) { // model->setItem(model_index, j, new QStandardItem(item.itemattr(i).name().c_str())); // } // else if(j == 2) { // model->setItem(model_index, j, new QStandardItem(QString::number(item.itemattr(i).value()))); // } // else if(j == 3) { // model->setItem(model_index, j, new QStandardItem(item.itemattr(i).introduce().c_str())); // } // } // model_index++; // } // model_index = 0; finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_SOX_setting() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_SOX_setting->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_SOX_setting->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_SOX_setting->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_SOX_setting->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_SOX_setting->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_SOX_setting->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_SOX_setting->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_SOX_setting->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_SOX_setting->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_SOX_setting->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_SOX_setting->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_SOX_setting->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_SOX_setting->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_SOX_setting->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_SOX_setting->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_SOX_setting->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_SOX_setting->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_SOX_setting->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_SOX_setting->horizontalHeader()->setSectionsClickable(false); ui->tableView_SOX_setting->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_SOX_setting->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_SOX_setting->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_SOX_setting->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_SOX_setting->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_SOX_setting->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_SOX_setting->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_SOX_setting->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_SOX_setting->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for (int i=0; i < item.itemattr_sox_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.itemattr_sox(i).name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.itemattr_sox(i).value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.itemattr_sox(i).introduce().c_str())); } } } finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::pageParaSetInit_other_setting() { // ui->tabWidget_paraset->setStyleSheet("background-color: #FFFFFF;"); // ui->pageParaSet->setStyleSheet("background-color: #FFFFFF;"); /*设置默认行高*/ ui->tableView_other_setting->verticalHeader()->setDefaultSectionSize(26); /*设置交替行颜色--允许交替行颜色*/ ui->tableView_other_setting->setAlternatingRowColors(true); /*设置水平/垂直滚动模式--一次滚动一个项目*/ ui->tableView_other_setting->setHorizontalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView_other_setting->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); /*设置选择行为--每次选择只有一整行*/ ui->tableView_other_setting->setSelectionBehavior(QAbstractItemView::SelectRows); /*设置拖放行为--不允许拖放*/ ui->tableView_other_setting->setDragDropMode(QAbstractItemView::NoDragDrop); /*设置选择模式--只能选择一个项目*/ ui->tableView_other_setting->setSelectionMode(QAbstractItemView::SingleSelection); /*设置Tab导航键--允许使用Tab键导航,shift+tab反向导航*/ ui->tableView_other_setting->setTabKeyNavigation(true); /*设置是否自动换行--取消自动换行*/ ui->tableView_other_setting->setWordWrap(false); /*设置文本省略模式--省略号不会出现在文本中*/ ui->tableView_other_setting->setTextElideMode(Qt::ElideNone); /*设置左上角全选按钮--禁用*/ ui->tableView_other_setting->setCornerButtonEnabled(false); /*设置是否支持表头排序--应该和表头是否可以单击保持一致*/ ui->tableView_other_setting->setSortingEnabled(false); /*设置是否显示网格线*/ ui->tableView_other_setting->setShowGrid(true); /*设置垂直表头是否可见*/ ui->tableView_other_setting->verticalHeader()->setVisible(true); /*设置选中一行表头是否加粗--不加粗*/ ui->tableView_other_setting->horizontalHeader()->setHighlightSections(true); /*设置最后一行是否拉伸填充*/ ui->tableView_other_setting->horizontalHeader()->setStretchLastSection(true); /*设置行标题最小宽度尺寸*/ ui->tableView_other_setting->horizontalHeader()->setMinimumSectionSize(0); /*设置行标题最小高度*/ ui->tableView_other_setting->horizontalHeader()->setFixedHeight(20); /*设置表头是否可以单击--不可单击*/ ui->tableView_other_setting->horizontalHeader()->setSectionsClickable(false); ui->tableView_other_setting->verticalHeader()->setHidden(false); /*是否可编辑*/ if(true) { ui->tableView_other_setting->setEditTriggers(QAbstractItemView::CurrentChanged|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed); } else { ui->tableView_other_setting->setEditTriggers(QAbstractItemView::NoEditTriggers); } QStringList columnNames; QList columnWidths; columnNames << "check" << "name" << "value" << "introduce"; columnWidths << 60 << 240 << 120 << 120; model = new QStandardItemModel; model->setHorizontalHeaderLabels(columnNames); ui->tableView_other_setting->setModel(model); int count = columnNames.count(); for(int i = 0; i< count;i++) { ui->tableView_other_setting->setColumnWidth(i, columnWidths.at(i)); } Delegate *checkDelegate = new Delegate; checkDelegate->setDelegateType("QCheckBox"); checkDelegate->setDelegateColumn(0); ui->tableView_other_setting->setItemDelegateForColumn(0, checkDelegate); Delegate *lineEidtDelegate = new Delegate; lineEidtDelegate->setDelegateType("QLineEdit"); ui->tableView_other_setting->setItemDelegateForColumn(1,lineEidtDelegate); Delegate * lineEidtDelegate1 = new Delegate; lineEidtDelegate1->setDelegateType("QLineEdit"); ui->tableView_other_setting->setItemDelegateForColumn(2, lineEidtDelegate1); Delegate *lineEidtDelegate2 = new Delegate; lineEidtDelegate2->setDelegateType("QLineEdit"); ui->tableView_other_setting->setItemDelegateForColumn(3,lineEidtDelegate2); BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { for(int i = 0; i < item.itemattr_other_size(); i++) { for(int j = 0; j < 4; j++) { if(j == 1) { model->setItem(i, j, new QStandardItem(item.itemattr_other(i).name().c_str())); } else if(j == 2) { model->setItem(i, j, new QStandardItem(QString::number(item.itemattr_other(i).value()))); } else if(j == 3) { model->setItem(i, j, new QStandardItem(item.itemattr_other(i).introduce().c_str())); } } } finBetteryData.close(); finBetteryData.clear(); } } // void MainWindow::setNum(QString value) // { // qDebug("###1"); // QModelIndex currentIndex = ui->pageParaSetTableView->currentIndex(); // if(currentIndex.column() == 3) // { // model->setData(model->index(currentIndex.row(), 10), value.toFloat()); // } // } void MainWindow::slot_getBcuNumberFromDialoglogin(int number) { // QTreeView treeView; // 创建模型 QStandardItemModel *model = new QStandardItemModel(ui->treeViewBCUbmu); // QMap indexTopPageMap; //创建一级目录项数为可变的 QStringList bcuNames; qDebug() << "number: " << number; for (int i = 1; i <= number; ++i) { QString bcuName = QString("BCU%1").arg(i); bcuNames.append(bcuName); } qDebug() << "BCUNames" << bcuNames; // 创建一级目录项 int count = 0; for (const QString &name : bcuNames) { QStandardItem *rootItem = new QStandardItem(name); // 设置一级目录项的字体为加粗 QFont boldFont = rootItem->font(); boldFont.setBold(true); rootItem->setFont(boldFont); count++; model->appendRow(rootItem); for (int i = 1; i <= 26; ++i) { QString bmuName = QString("BMU%1").arg(i); QStandardItem *bmuItem = new QStandardItem(bmuName); rootItem->appendRow(bmuItem); } } ui->tabWidgetBCU->setCurrentIndex(0); ui->tabWidgetBMU->setCurrentIndex(0); connect(ui->treeViewBCUbmu, &QTreeView::clicked, [=](const QModelIndex index){ //BCU被点击的索引已被实现,bmu待定 if(index.parent().isValid()) { qDebug() << "index" << index; qDebug() << "BMU" << index.column() << index.row(); ui->pageBatteryStackWidget->setCurrentIndex(1); } else { // qDebug() << "index" << index; qDebug() << "BCU" << index.row(); // int topLeveIndex = index.row(); ui->pageBatteryStackWidget->setCurrentIndex(0); } }); ui->treeViewBCUbmu->setModel(model); ui->treeViewBCUbmu->setHeaderHidden(true); ui->treeViewBCUbmu->setAnimated(true); ui->treeViewBCUbmu->expandAll(); ui->treeViewBCUbmu->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->treeViewBCUbmu->show(); } void MainWindow::on_pageParaSetCheck_stateChanged(int arg1) { QWidget *currentWidget = ui->tabWidget_paraset->currentWidget(); if (currentWidget) { QTableView *tableView = currentWidget->findChild(); if (tableView) { QStandardItemModel *model = qobject_cast(tableView->model()); if (model) { if(arg1 == Qt::CheckState::Checked) { for(int i = 0; i < model->rowCount(); i++) { model->setItem(i, 0, new QStandardItem("true")); } } else { for(int i = 0; i < model->rowCount(); i++) { model->setItem(i, 0, new QStandardItem("false")); } } } } } } void MainWindow::on_pageParaSetRead_clicked() { BatteryConfig::Item item; std::ifstream finBetteryData("battery.data", std::ios::binary); if(!item.ParseFromIstream(&finBetteryData)) { qDebug() << __FUNCTION__ << __LINE__ << "proto parse failed"; finBetteryData.close(); finBetteryData.clear(); } else { QList checkRow_read; QList checkAddress_read; QWidget *currentWidget = ui->tabWidget_paraset->currentWidget(); if (currentWidget) { QTableView *tableView = currentWidget->findChild(); if (tableView) { QStandardItemModel *model = qobject_cast(tableView->model()); if (model) { switch (tabWidget_paraset_index) { case 0: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr(row)->set_value(data); int tempAddress = item.mutable_itemattr(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 1: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_balance(row)->set_value(data); int tempAddress = item.mutable_itemattr_balance(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 2: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_sox(row)->set_value(data); int tempAddress = item.mutable_itemattr_sox(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 3: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_dido(row)->set_value(data); int tempAddress = item.mutable_itemattr_dido(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_alert_value(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_value(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 5: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_alert_delay(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_delay(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 6: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_alert_release_value(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_release_value(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 7: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_alert_release_delay(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_release_delay(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 8: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_alert_dropcurr_rate(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_dropcurr_rate(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 9: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_alert_solve_measure(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_solve_measure(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; case 10: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr_other(row)->set_value(data); int tempAddress = item.mutable_itemattr_other(row)->addr(); checkRow_read.append(row); checkAddress_read.append(tempAddress); } } } } break; } } } } if (checkRow_read.isEmpty()) { QMessageBox::warning(nullptr, "警告", "勾选框无勾选,请勾选后再操作"); } else{ int startAddress = -1; int consecutiveCount = 0; QList> pairs_addr;//addr, the number of the continuous int row_index_i = 0; // 防止勾选框不间断时,checkRow_read与checkAddress_read,值与索引不匹配的问题 for (int row : checkRow_read) { int address = checkAddress_read[row_index_i]; if (startAddress == -1) { startAddress = address; consecutiveCount = 1; } else if (address == startAddress + consecutiveCount) { consecutiveCount++; } else { if (consecutiveCount > 1) { pairs_addr.append(qMakePair(startAddress, consecutiveCount)); } else { pairs_addr.append(qMakePair(startAddress, 1)); } startAddress = address; consecutiveCount = 1; } row_index_i++; } if (consecutiveCount > 1) { pairs_addr.append(qMakePair(startAddress, consecutiveCount)); } else { pairs_addr.append(qMakePair(startAddress, 1)); } int rowStart = 0; QList>::iterator it; for (it = pairs_addr.begin(); it!= pairs_addr.end(); ++it) { qDebug() << "First element read: " << it->first << ", Second element read: " << it->second; uint16_t result[it->second]; int tempIndex = checkRow_read[rowStart]; emit read_regs_signals(it->first, it->second, result, tempIndex); rowStart += it->second; } rowStart = 0; qDebug() << "read of the row" << checkRow_read; qDebug() << "read of the address" << checkAddress_read; } finBetteryData.close(); finBetteryData.clear(); } } void MainWindow::slot_pageParaSetShow(QByteArray byteArray, int dataType, int row, int nb) { Q_UNUSED(dataType); QList result_int; bool ok; for (int i = 3; i < byteArray.size(); i += 2) { quint8 firstByte = (i < byteArray.size())? byteArray.at(i) : 0; quint8 secondByte = (i + 1 < byteArray.size())? byteArray.at(i + 1) : 0; QString hexValue = QString("%1%2") .arg(QString::number(firstByte, 16).rightJustified(2, '0')) .arg(QString::number(secondByte, 16).rightJustified(2, '0')); result_int += hexValue.toInt(&ok, 16); } // qDebug() << "test read holding regs" << result_int; qDebug() << "the row of the start index:" << row << "the number of the setting: " << nb; qDebug() << result_int; int i = 0; for(;i < nb; row++, i++) { QWidget *currentWidget = ui->tabWidget_paraset->currentWidget(); if (currentWidget) { QTableView *tableView = currentWidget->findChild(); if (tableView) { QStandardItemModel *model = qobject_cast(tableView->model()); if (model) { QModelIndex index = model->index(row, 2); model->setData(index, result_int[i]); qDebug() << "row " << row << " result: " << result_int[i]; } } } } } void MainWindow::on_pageParaSetWrite_clicked() { BatteryConfig::Item item; // 从磁盘读取 protobuf 文件 std::ifstream finBetteryData("battery.data", std::ios::in | std::ios::binary); if (!finBetteryData.is_open()) { } // 获取文件大小 finBetteryData.seekg(0, std::ios::end); size_t size = finBetteryData.tellg(); finBetteryData.seekg(0, std::ios::beg); // 读取文件内容到字符串 std::string serialized_data(size, '\0'); if (!finBetteryData.read(&serialized_data[0], size)) { } finBetteryData.close(); // 反序列化 protobuf 数据 if (!item.ParseFromString(serialized_data)) { } QList checkRow_write;//存放被勾选的勾选框的索引值 QVector originVector;//存放被勾选的勾选框的value QWidget *currentWidget = ui->tabWidget_paraset->currentWidget(); if (currentWidget) { QTableView *tableView = currentWidget->findChild(); if (tableView) { QStandardItemModel *model = qobject_cast(tableView->model()); if (model) { switch (tabWidget_paraset_index) { case 0: //仅需地址和值 qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr(row)->set_value(data); int tempAddress = item.mutable_itemattr(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 1: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_balance(row)->set_value(data); int tempAddress = item.mutable_itemattr_balance(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 2: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_sox(row)->set_value(data); int tempAddress = item.mutable_itemattr_sox(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 3: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_dido(row)->set_value(data); int tempAddress = item.mutable_itemattr_dido(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 4: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_alert_value(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_value(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 5: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_alert_delay(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_delay(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 6: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_alert_release_value(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_release_value(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 7: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_alert_release_delay(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_release_delay(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 8: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_alert_dropcurr_rate(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_dropcurr_rate(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 9: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_alert_solve_measure(row)->set_value(data); int tempAddress = item.mutable_itemattr_alert_solve_measure(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; case 10: qDebug() << "the tabWidget_paraset_index is : " << tabWidget_paraset_index; for(int row = 0; row < model->rowCount(); row++) { for(int column = 0; column < model->columnCount(); column++) { if(column == 0) { QModelIndex index = model->index(row, column); QString data = model->data(index).toString(); if(data == "true") { index = model->index(row, 2); // int tempAddress = item.mutable_itemattr(row)->addr(); // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; uint16_t data = model->data(index).toUInt(); item.mutable_itemattr_other(row)->set_value(data); int tempAddress = item.mutable_itemattr_other(row)->addr(); // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); } } } } break; } } } } // for(int row = 0; row < model->rowCount(); row++) // { // for(int column = 0; column < model->columnCount(); column++) // { // if(column == 0) // { // QModelIndex index = model->index(row, column); // QString data = model->data(index).toString(); // if(data == "true") { // index = model->index(row, 2); // // int tempAddress = item.mutable_itemattr(row)->addr(); // // int resultAddress = tempAddress < 4000 ? tempAddress - 3000 : tempAddress -4000 + 162; // uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr(row)->set_value(data); // // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); // } // } // } // } // for(int row = 0; row < model->rowCount(); row++) { // for(int column = 0; column < model->columnCount(); column++) { // if(column == 0) { // QModelIndex index = model->index(row, column); // QString data = model->data(index).toString(); // if(data == "true") { // index = model->index(row, 2); // uint16_t data = model->data(index).toUInt(); // item.mutable_itemattr(row)->set_value(data); // // qDebug() << "the address:" << item.mutable_itemattr(row)->addr() << " , the value is :" <value()); // } // } // } // } qDebug() << "write of the row" << checkRow_write; qDebug() << "originalLIst of the value" << originVector; if (checkRow_write.isEmpty()) { QMessageBox::warning(nullptr, "警告", "勾选框无勾选,请勾选后再操作"); } else { for (int i=0; ivalue(); // qDebug() << "update"; } void MainWindow::on_tabChanged(int index) { tabWidget_paraset_index = index; }