#include "frmmain.h" #include "ui_frmmain.h" #include "quihelper.h" #include "dbquery.h" #include "frmuser.h" #include "frmopen.h" #include "frmlog.h" #include "frmconfig.h" #include "frmstatus.h" frmMain::frmMain(QWidget *parent) : QWidget(parent), ui(new Ui::frmMain) { ui->setupUi(this); this->initForm(); this->changeStyle(); } frmMain::~frmMain() { delete ui; } void frmMain::mousePressEvent(QMouseEvent *e) { if (e->button() == Qt::RightButton) { exit(0); } } void frmMain::initForm() { #ifndef __arm__ //根据配置文件设置的窗体大小设置 this->setFixedSize(AppConfig::MainWidth, AppConfig::MainHeight); //设置无边框 QUIHelper::setFramelessForm(this); #else this->showMaximized(); #endif //绑定按钮按下信号槽 QList btns = ui->widgetMain->findChildren(); foreach (QToolButton *btn, btns) { connect(btn, SIGNAL(clicked(bool)), this, SLOT(buttonClick())); } //启动定时器显示日期时间 QTimer *timer = new QTimer(this); timer->setInterval(1000); connect(timer, SIGNAL(timeout()), this, SLOT(showTime())); timer->start(); showTime(); //将子窗体添加到堆栈窗体 frmUser *user = new frmUser; connect(user, SIGNAL(returnMain()), this, SLOT(returnMain())); frmOpen *open = new frmOpen; connect(open, SIGNAL(returnMain()), this, SLOT(returnMain())); frmLog *log = new frmLog; connect(log, SIGNAL(returnMain()), this, SLOT(returnMain())); frmConfig *config = new frmConfig; connect(config, SIGNAL(returnMain()), this, SLOT(returnMain())); connect(config, SIGNAL(changeStyle()), this, SLOT(changeStyle())); frmStatus *status = new frmStatus; connect(status, SIGNAL(returnMain()), this, SLOT(returnMain())); ui->stackedWidget->addWidget(user); ui->stackedWidget->addWidget(open); ui->stackedWidget->addWidget(log); ui->stackedWidget->addWidget(config); ui->stackedWidget->addWidget(status); ui->widgetMain->setProperty("flag", "navmain"); ui->widgetLeft->setProperty("flag", "navmain"); QSize icoSize(38, 38); ui->btnNet->setIconSize(icoSize); ui->btnAc220->setIconSize(icoSize); ui->btnPower->setIconSize(icoSize); //设置左下角网络状态图标/交流电图标/电池图标 #if 1 setNet(true); setAc220(true); setPower(true); #else setNet(false); setAc220(false); setPower(false); #endif } void frmMain::changeStyle() { //设置样式 QStringList qss; //全局无焦点虚边框,全局文字颜色,全局字号 qss.append(QString("*{outline:0px;color:#E5F8F2;font:%1px;}").arg(20)); //主窗体背景 qss.append(QString("QWidget#widgetMain{border-image:url(%1);}").arg(AppConfig::BgImage)); //左侧窗体透明背景 qss.append("QWidget#widgetLeft{background-color:rgba(48,116,177,80);}"); //左侧窗体日期时间标签文字颜色 qss.append("QWidget#widgetLeft>QLabel{color:rgb(255,255,255);}"); //左侧窗体顶部图片 qss.append("QLabel#labLog{border-image:url(:/image/topbg1.png);}"); //标签文本样式 qss.append(QString("QLabel#labTitle{font:%1px;}").arg(23)); qss.append(QString("QLabel[flag=\"title\"]{font:%1px;}").arg(23)); qss.append(QString("QLabel[flag=\"big\"]{font:%1px;}").arg(25)); qss.append(QString("QLabel#labDate{font:%1px;}").arg(20)); qss.append(QString("QLabel#labTime{font:%1px;}").arg(40)); //导航文本背景 qss.append("QLabel[flag=\"nav\"]{" "border-image: url(:/image/navlabel.png);}"); //输入框背景透明 qss.append("QLineEdit{background-color:rgba(0,0,0,0);padding:5px;" "border-radius:5px;border:2px solid #03C5ED;}"); //输入框获取焦点边框颜色 qss.append("QLineEdit:focus{border:2px solid #FF696B;}"); //分组框样式 qss.append("QGroupBox{border-radius:5px;border:2px solid #03C5ED;margin-top:3ex;}"); qss.append("QGroupBox::title{subcontrol-origin:margin;position:relative;left:10px;}"); //普通导航翻页按钮样式,所有子界面共用 qss.append("QWidget[flag=\"nav\"] QAbstractButton{" "background-color:rgba(0,187,226,100);" "border-radius:5px;border:2px solid #03C5ED;}"); qss.append("QWidget[flag=\"nav\"] QAbstractButton:hover," "QWidget[flag=\"nav\"] QAbstractButton:pressed{" "background-color:rgba(12,129,203,100);}"); //返回按钮样式,所有子界面共用 qss.append("QWidget[flag=\"return\"] QAbstractButton{" "background-color:rgba(7,48,73,100);" "border-radius:5px;border:2px solid #03C5ED;}"); qss.append("QWidget[flag=\"return\"] QAbstractButton:hover," "QWidget[flag=\"return\"] QAbstractButton:pressed{" "background-color:rgba(24,189,155,100);}"); //录入指纹等特殊按钮 qss.append("QAbstractButton[flag=\"btn\"]{" "background-color:rgba(55,100,139,100);" "border-radius:5px;border:2px solid #03C5ED;}"); qss.append("QAbstractButton[flag=\"btn\"]:hover," "QAbstractButton[flag=\"btn\"]:pressed{" "background-color:rgba(1,142,227,100);}"); qss.append("QAbstractButton[flag=\"btn\"]:checked{" "background-color:rgba(33,137,104,150);}"); //按钮复选框样式1 qss.append("QWidget[flag=\"admin\"] QAbstractButton{font:20pt;" "border-image: url(:/image/btn_check_off1.png);}"); qss.append("QWidget[flag=\"admin\"] QAbstractButton:checked{" "border-image: url(:/image/btn_check_on1.png);}"); //按钮复选框样式2 qss.append("QWidget[flag=\"door\"] QAbstractButton{font:20pt;" "border-image: url(:/image/btn_check_off2.png);}"); qss.append("QWidget[flag=\"door\"] QAbstractButton:checked{" "border-image: url(:/image/btn_check_on2.png);}"); //主窗体导航按钮 qss.append("QWidget[flag=\"navmain\"] QAbstractButton{" "background:none;border:none;}"); //顶部导航按钮样式,所有子界面共用 qss.append("QWidget[flag=\"navtop\"] QAbstractButton{" "background:none;border:none;}"); qss.append("QWidget[flag=\"navtop\"] QAbstractButton:checked{" "border-image:url(:/image/btnbgtop.png);}"); //左侧导航按钮样式,所有子界面共用 qss.append("QWidget[flag=\"navleft\"] QAbstractButton{" "background:none;border:none;}"); qss.append("QWidget[flag=\"navleft\"] QAbstractButton:checked{" "border-image:url(:/image/btnbgleft.png);}"); //表格样式,所有子界面共用 qss.append("QTableView{background-color:rgba(16,44,56,150);" "border:1px solid #617D90;" "selection-background-color:rgba(0,187,226,100);" "alternate-background-color:rgba(49,88,105,150);" "selection-color:#F0F0F0;gridline-color:#517DA5;}"); //表格头部样式,所有子界面共用 qss.append("QHeaderView::section,QTableCornerButton:section{" "background:#102C38;border:1px solid #617D90;}"); //滑块条样式 qss.append("QSlider::groove:horizontal{background:rgba(29,34,56,150);" "height:16px;border-radius:8px;}" "QSlider::add-page:horizontal{background:rgba(29,34,56,150);" "height:16px;border-radius:8px;}" "QSlider::sub-page:horizontal{background:rgba(37,156,210,150);" "height:16px;border-radius:8px;}" "QSlider::handle:horizontal{width:30px;margin-top:-7px;" "margin-bottom:-7px;border-radius:14px;" "background:qradialgradient(spread:pad,cx:0.5,cy:0.5," "radius:0.5,fx:0.5,fy:0.5,stop:0.6 #FFFFFF,stop:0.8 rgba(250,250,250,100));}"); //滚动条样式 qss.append("QScrollBar:vertical{background:rgba(150,150,150,100);padding:0px;border-radius:10px;min-width:20px;max-width:20px;}" "QScrollBar::handle:vertical{background:#617D90;min-height:120px;border-radius:10px;}" "QScrollBar::handle:vertical:hover{background:#1ABC9C;}" "QScrollBar::handle:vertical:pressed{background:#1ABC9C;}" "QScrollBar::add-page:vertical{background:none;}" "QScrollBar::sub-page:vertical{background:none;}" "QScrollBar::add-line:vertical{background:none;}" "QScrollBar::sub-line:vertical{background:none;}"); qApp->setStyleSheet(qss.join("")); } void frmMain::buttonClick() { QToolButton *btn = (QToolButton *)sender(); if (btn == ui->btnUser) { DbQuery::addLogInfo("进入用户管理界面"); ui->stackedWidget->setCurrentIndex(1); } else if (btn == ui->btnOpen) { DbQuery::addLogInfo("进入开柜界面"); ui->stackedWidget->setCurrentIndex(2); } else if (btn == ui->btnLog) { DbQuery::addLogInfo("进入日志管理界面"); ui->stackedWidget->setCurrentIndex(3); } else if (btn == ui->btnConfig) { DbQuery::addLogInfo("进入系统设置界面"); ui->stackedWidget->setCurrentIndex(4); } else if (btn == ui->btnStatus) { DbQuery::addLogInfo("进入系统状态界面"); ui->stackedWidget->setCurrentIndex(5); } } void frmMain::returnMain() { ui->stackedWidget->setCurrentIndex(0); } void frmMain::showTime() { QDateTime now = QDateTime::currentDateTime(); ui->labTime->setText(now.toString("hh:mm:ss")); ui->labDate->setText(now.toString("yyyy-M-d dddd")); } void frmMain::setNet(bool ok) { QString ico = QString(":/image/%1.png").arg(ok ? "netok" : "neterror"); ui->btnNet->setIcon(QIcon(ico)); } void frmMain::setAc220(bool ok) { QString ico = QString(":/image/%1.png").arg(ok ? "ac220ok" : "ac220error"); ui->btnAc220->setIcon(QIcon(ico)); } void frmMain::setPower(bool ok) { QString ico = QString(":/image/%1.png").arg(ok ? "powerok" : "powererror"); ui->btnPower->setIcon(QIcon(ico)); }