#include "frmconfigalarm.h" #include "ui_frmconfigalarm.h" #include "head.h" frmConfigAlarm::frmConfigAlarm(QWidget *parent) : QWidget(parent), ui(new Ui::frmConfigAlarm) { ui->setupUi(this); this->initForm(); this->initConfig(); this->initTable1(); this->initTable2(); } frmConfigAlarm::~frmConfigAlarm() { delete ui; } void frmConfigAlarm::showEvent(QShowEvent *) { this->initConfig(); ui->tableMain1->setCurrentItem(ui->tableMain1->item(0, 0)); on_tableMain1_pressed(ui->tableMain1->currentIndex()); } void frmConfigAlarm::initForm() { int fixWidth = 120; int fixHeight = 50; if (AppConfig::MainHeight == 480) { fixWidth = 100; fixHeight = 40; } ui->btnAlarmLink->setFixedSize(fixWidth, fixHeight); ui->btnAlarmUp->setFixedSize(fixWidth, fixHeight); //绑定返回按钮按下返回到主界面 connect(ui->btnReturn, SIGNAL(clicked(bool)), this, SIGNAL(returnMain())); //绑定保存按钮保存配置参数 connect(ui->btnSave, SIGNAL(clicked(bool)), this, SLOT(saveConfig())); //设置属性以便应用样式表 ui->widgetReturn->setProperty("flag", "return"); } void frmConfigAlarm::initConfig() { tempAlarmMode.clear(); tempAlarmLink.clear(); tempAlarmUp.clear(); for (int i = 0; i < 8; i++) { tempAlarmMode.append(0); tempAlarmLink.append(false); tempAlarmUp.append(false); } tempAlarmMode[0] = AppConfig::AlarmMode1; tempAlarmMode[1] = AppConfig::AlarmMode2; tempAlarmMode[2] = AppConfig::AlarmMode3; tempAlarmMode[3] = AppConfig::AlarmMode4; tempAlarmMode[4] = AppConfig::AlarmMode5; tempAlarmMode[5] = AppConfig::AlarmMode6; tempAlarmMode[6] = AppConfig::AlarmMode7; tempAlarmMode[7] = AppConfig::AlarmMode8; tempAlarmLink[0] = AppConfig::AlarmLink1; tempAlarmLink[1] = AppConfig::AlarmLink2; tempAlarmLink[2] = AppConfig::AlarmLink3; tempAlarmLink[3] = AppConfig::AlarmLink4; tempAlarmLink[4] = AppConfig::AlarmLink5; tempAlarmLink[5] = AppConfig::AlarmLink6; tempAlarmLink[6] = AppConfig::AlarmLink7; tempAlarmLink[7] = AppConfig::AlarmLink8; tempAlarmUp[0] = AppConfig::AlarmUp1; tempAlarmUp[1] = AppConfig::AlarmUp2; tempAlarmUp[2] = AppConfig::AlarmUp3; tempAlarmUp[3] = AppConfig::AlarmUp4; tempAlarmUp[4] = AppConfig::AlarmUp5; tempAlarmUp[5] = AppConfig::AlarmUp6; tempAlarmUp[6] = AppConfig::AlarmUp7; tempAlarmUp[7] = AppConfig::AlarmUp8; } void frmConfigAlarm::saveConfig() { AppConfig::AlarmMode1 = tempAlarmMode.at(0); AppConfig::AlarmMode2 = tempAlarmMode.at(1); AppConfig::AlarmMode3 = tempAlarmMode.at(2); AppConfig::AlarmMode4 = tempAlarmMode.at(3); AppConfig::AlarmMode5 = tempAlarmMode.at(4); AppConfig::AlarmMode6 = tempAlarmMode.at(5); AppConfig::AlarmMode7 = tempAlarmMode.at(6); AppConfig::AlarmMode8 = tempAlarmMode.at(7); AppConfig::AlarmLink1 = tempAlarmLink.at(0); AppConfig::AlarmLink2 = tempAlarmLink.at(1); AppConfig::AlarmLink3 = tempAlarmLink.at(2); AppConfig::AlarmLink4 = tempAlarmLink.at(3); AppConfig::AlarmLink5 = tempAlarmLink.at(4); AppConfig::AlarmLink6 = tempAlarmLink.at(5); AppConfig::AlarmLink7 = tempAlarmLink.at(6); AppConfig::AlarmLink8 = tempAlarmLink.at(7); AppConfig::AlarmUp1 = tempAlarmUp.at(0); AppConfig::AlarmUp2 = tempAlarmUp.at(1); AppConfig::AlarmUp3 = tempAlarmUp.at(2); AppConfig::AlarmUp4 = tempAlarmUp.at(3); AppConfig::AlarmUp5 = tempAlarmUp.at(4); AppConfig::AlarmUp6 = tempAlarmUp.at(5); AppConfig::AlarmUp7 = tempAlarmUp.at(6); AppConfig::AlarmUp8 = tempAlarmUp.at(7); AppConfig::writeConfig(); } void frmConfigAlarm::initTable1() { //报警类型 alarmType << "震动报警" << "市电掉电" << "金属误入插入" << "温度报警" << "非法开门" << "开门时间过久" << "尝试次数过多" << "故障报警"; int count = alarmType.count(); //设置列数和列宽 ui->tableMain1->setColumnCount(1); ui->tableMain1->setColumnWidth(0, 100); //设置行数行高 ui->tableMain1->setRowCount(count); ui->tableMain1->verticalHeader()->setDefaultSectionSize(50); ui->tableMain1->horizontalHeader()->setVisible(false); ui->tableMain1->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableMain1->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableMain1->setSelectionMode(QAbstractItemView::SingleSelection); //ui->tableMain1->setAlternatingRowColors(true); ui->tableMain1->verticalHeader()->setVisible(false); ui->tableMain1->horizontalHeader()->setStretchLastSection(true); for (int i = 0; i < count; i++) { QTableWidgetItem *item = new QTableWidgetItem(alarmType.at(i)); item->setTextAlignment(Qt::AlignCenter); ui->tableMain1->setItem(i, 0, item); } } void frmConfigAlarm::initTable2() { //报警级别 alarmMode << "不报警" << "普通报警" << "严重报警" << "最严重报警" ; int count = alarmMode.count(); //设置列数和列宽 ui->tableMain2->setColumnCount(1); ui->tableMain2->setColumnWidth(0, 100); //设置行数行高 ui->tableMain2->setRowCount(count); ui->tableMain2->verticalHeader()->setDefaultSectionSize(50); ui->tableMain2->horizontalHeader()->setVisible(false); ui->tableMain2->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableMain2->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableMain2->setSelectionMode(QAbstractItemView::SingleSelection); //ui->tableMain2->setAlternatingRowColors(true); ui->tableMain2->verticalHeader()->setVisible(false); ui->tableMain2->horizontalHeader()->setStretchLastSection(true); for (int i = 0; i < count; i++) { QTableWidgetItem *item = new QTableWidgetItem(alarmMode.at(i)); item->setTextAlignment(Qt::AlignCenter); ui->tableMain2->setItem(i, 0, item); } } void frmConfigAlarm::on_tableMain1_pressed(const QModelIndex &index) { //根据报警类型从数组中取出该报警类型对应的报警级别 int flag = index.row(); QString text = alarmMode.at(tempAlarmMode.at(flag)); //选中报警级别 int row = alarmMode.indexOf(text); ui->tableMain2->setCurrentItem(ui->tableMain2->item(row, 0)); ui->btnAlarmLink->setChecked(tempAlarmLink.at(flag)); ui->btnAlarmUp->setChecked(tempAlarmUp.at(flag)); } void frmConfigAlarm::on_tableMain2_pressed(const QModelIndex &index) { //动态更改当前报警类型的报警级别,存储到临时数组 int row = ui->tableMain1->currentRow(); if (row < 0) { return; } QString text = index.data().toString(); tempAlarmMode[row] = alarmMode.indexOf(text); } void frmConfigAlarm::on_btnAlarmLink_checkedChanged(bool) { //动态更改当前报警类型的报警联动与否,存储到临时数组 int row = ui->tableMain1->currentRow(); if (row < 0) { return; } bool isCheck = ui->btnAlarmLink->getChecked(); tempAlarmLink[row] = isCheck; } void frmConfigAlarm::on_btnAlarmUp_checkedChanged(bool) { //动态更改当前报警类型的上传中心与否,存储到临时数组 int row = ui->tableMain1->currentRow(); if (row < 0) { return; } bool isCheck = ui->btnAlarmUp->getChecked(); tempAlarmUp[row] = isCheck; }