#include "frmstatus.h" #include "ui_frmstatus.h" #include "dbpage.h" #include "dbquery.h" frmStatus::frmStatus(QWidget *parent) : QWidget(parent), ui(new Ui::frmStatus) { ui->setupUi(this); this->initForm(); this->initTable(); this->initTable1(); this->initTable2(); this->test(); } frmStatus::~frmStatus() { delete ui; } void frmStatus::test() { //模拟测试数据 QStringList content; int type = rand() % 2; QSqlDatabase::database().transaction(); if (type == 0) { content << "震动报警" << "市电掉电" << "金属误入插入" << "温度报警" << "非法开门"; for (int i = 0; i < 10; i++) { DbQuery::addGoodsInfo(QString("WP%1").arg(i, 3, 10, QChar('0')), QString("EPC%1").arg(i, 3, 10, QChar('0')), "贵重物品", content.at(rand() % 5)); } } else if (type == 1) { content << "震动报警" << "市电掉电" << "金属误入插入" << "温度报警" << "非法开门"; for (int i = 0; i < 10; i++) { DbQuery::addErrorInfo(content.at(rand() % 5), "故障排查信息"); } } QSqlDatabase::database().commit(); } void frmStatus::initForm() { if (AppConfig::MainHeight == 480) { rowCount = 10; ui->widgetLeft->setFixedWidth(90); ui->widgetReturn1->setFixedWidth(120); ui->widgetReturn2->setFixedWidth(120); } else { rowCount = 13; ui->widgetLeft->setFixedWidth(120); ui->widgetReturn1->setFixedWidth(150); ui->widgetReturn2->setFixedWidth(150); } //绑定返回按钮按下返回到主界面 connect(ui->btnReturn, SIGNAL(clicked(bool)), this, SIGNAL(returnMain())); connect(ui->btnReturn1, SIGNAL(clicked(bool)), this, SIGNAL(returnMain())); connect(ui->btnReturn2, SIGNAL(clicked(bool)), this, SIGNAL(returnMain())); //设置属性以便应用样式表 ui->widgetReturn->setProperty("flag", "return"); ui->widgetReturn1->setProperty("flag", "return"); ui->widgetReturn2->setProperty("flag", "return"); ui->widgetLeft->setProperty("flag", "navleft"); //绑定顶部导航按钮 QList btns = ui->widgetLeft->findChildren(); foreach (QPushButton *btn, btns) { btn->setCheckable(true); connect(btn, SIGNAL(clicked(bool)), this, SLOT(buttonClick())); } ui->btnStatus->click(); } void frmStatus::buttonClick() { QPushButton *b = (QPushButton *)sender(); QList btns = ui->widgetLeft->findChildren(); //改变选中按钮 foreach (QPushButton *btn, btns) { btn->setChecked(btn == b); } //切换到对应界面 if (b == ui->btnStatus) { ui->stackedWidget->setCurrentIndex(0); } else if (b == ui->btnStatus1) { ui->stackedWidget->setCurrentIndex(1); dbPage1->select(); } else if (b == ui->btnStatus2) { ui->stackedWidget->setCurrentIndex(2); dbPage2->select(); } } void frmStatus::initTable() { //设置列数和列宽 ui->tableMain->setColumnCount(2); ui->tableMain->setColumnWidth(0, 200); ui->tableMain->setColumnWidth(1, 300); //设置行数行高 ui->tableMain->setRowCount(7); ui->tableMain->verticalHeader()->setDefaultSectionSize(50); ui->tableMain->horizontalHeader()->setVisible(false); ui->tableMain->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableMain->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableMain->setSelectionMode(QAbstractItemView::SingleSelection); ui->tableMain->setAlternatingRowColors(true); ui->tableMain->verticalHeader()->setVisible(false); ui->tableMain->horizontalHeader()->setStretchLastSection(true); setItem(0, "MAC地址"); setItem(1, "本机IP"); setItem(2, "连接状态"); setItem(3, "主服务器IP"); setItem(4, "从服务器IP"); setItem(5, "温湿度状态"); setItem(6, "版本信息"); setValue(0, "20-02-4B-96-00-1B"); setValue(1, AppConfig::IPClient); setValue(2, "远程控制中心正常"); setValue(3, AppConfig::IPServer); setValue(4, AppConfig::IPServer2); setValue(5, "温度设备未接入 / 湿度设备未接入"); setValue(6, "TLU3100 硬件版本: V1.0 软件版本: V1.0"); } void frmStatus::initTable1() { columnNames1.clear(); columnWidths1.clear(); columnNames1.append("物资编号"); columnNames1.append("EPC编号"); columnNames1.append("物资类型"); columnNames1.append("物资状态"); columnWidths1.append(100); columnWidths1.append(100); columnWidths1.append(120); columnWidths1.append(150); //设置需要显示数据的表格和翻页的按钮,加载初始数据 dbPage1 = new DbPage(this); //设置所有列居中 dbPage1->setAllCenter(true); dbPage1->setControl(ui->tableMain1, ui->labPageCurrent1, ui->labPageCount1, ui->labResultCurrent1, ui->labResultCount1, 0, 0, ui->btnFirst1, ui->btnPre1, ui->btnNext1, ui->btnLast1, "rowid"); //绑定数据源 QString selectColumn = "GoodsID,GoodsEPC,GoodsType,GoodsContent"; dbPage1->setSelectColumn(selectColumn); dbPage1->setTableName("GoodsInfo"); dbPage1->setOrderSql("rowid desc"); dbPage1->setWhereSql("where 1=1"); dbPage1->setRecordsPerpage(rowCount); dbPage1->setColumnNames(columnNames1); dbPage1->setColumnWidths(columnWidths1); dbPage1->select(); //最后一列自动填充 ui->tableMain1->horizontalHeader()->setMinimumHeight(45); ui->tableMain1->verticalHeader()->setDefaultSectionSize(39); ui->tableMain1->setAlternatingRowColors(true); ui->tableMain1->verticalHeader()->setVisible(false); ui->tableMain1->horizontalHeader()->setStretchLastSection(true); } void frmStatus::initTable2() { columnNames2.clear(); columnWidths2.clear(); columnNames2.append("故障类型"); columnNames2.append("故障内容"); columnWidths2.append(180); columnWidths2.append(200); //设置需要显示数据的表格和翻页的按钮,加载初始数据 dbPage2 = new DbPage(this); //设置所有列居中 dbPage2->setAllCenter(true); dbPage2->setControl(ui->tableMain2, ui->labPageCurrent2, ui->labPageCount2, ui->labResultCurrent2, ui->labResultCount2, 0, 0, ui->btnFirst2, ui->btnPre2, ui->btnNext2, ui->btnLast2, "rowid"); //绑定数据源 QString selectColumn = "ErrorType,ErrorContent"; dbPage2->setSelectColumn(selectColumn); dbPage2->setTableName("ErrorInfo"); dbPage2->setOrderSql("rowid desc"); dbPage2->setWhereSql("where 1=1"); dbPage2->setRecordsPerpage(rowCount); dbPage2->setColumnNames(columnNames2); dbPage2->setColumnWidths(columnWidths2); dbPage2->select(); //最后一列自动填充 ui->tableMain2->horizontalHeader()->setMinimumHeight(45); ui->tableMain2->verticalHeader()->setDefaultSectionSize(39); ui->tableMain2->setAlternatingRowColors(true); ui->tableMain2->verticalHeader()->setVisible(false); ui->tableMain2->horizontalHeader()->setStretchLastSection(true); } void frmStatus::setItem(int index, const QString &text) { QTableWidgetItem *item = new QTableWidgetItem(text); item->setTextAlignment(Qt::AlignCenter); ui->tableMain->setItem(index, 0, item); } void frmStatus::setValue(int index, const QString &text) { QTableWidgetItem *item = new QTableWidgetItem(text); item->setTextAlignment(Qt::AlignCenter); ui->tableMain->setItem(index, 1, item); }