#include "frmmain.h" #include "ui_frmmain.h" #include "quihelper.h" #include "iconhelper.h" #include "frmarming.h" frmMain::frmMain(QWidget *parent) : QWidget(parent), ui(new Ui::frmMain) { ui->setupUi(this); this->initForm(); this->initStyle(); this->initBtn(); this->initTableWidget(); ui->btnDefenceView->click(); } frmMain::~frmMain() { delete ui; } bool frmMain::eventFilter(QObject *watched, QEvent *event) { if (watched == ui->widgetTitle) { if (event->type() == QEvent::MouseButtonDblClick) { on_btnMenu_Max_clicked(); } } return QWidget::eventFilter(watched, event); } void frmMain::initForm() { //设置无边框 QUIHelper::setFramelessForm(this); ui->labTitle->setText("综合安防报警管理软件"); this->setWindowTitle(ui->labTitle->text()); ui->widgetTitle->installEventFilter(this); ui->widgetBtn->setProperty("flag", "btn"); ui->widgetArming->setProperty("flag", "arming"); } void frmMain::initStyle() { QStringList qss; //全局无焦点虚边框,全局文字颜色,全局字号 qss.append(QString("*{outline:0px;color:#ABD6FF;font:%1px;}").arg(15)); qss.append(QString("QLabel#labTitle{font:%1px;}").arg(18)); qss.append(QString("QWidget[flag=\"check\"] QAbstractButton{font:%1px;}").arg(18)); //主界面顶部栏 qss.append("QWidget#widgetTitle{background:qlineargradient" "(spread:pad,x1:0,y1:0,x2:1,y2:0,stop:0 #0973AB,stop:1 #098DCE);}" "QToolButton::menu-indicator{image:None;}"); //主界面顶部左上角logo qss.append("QLabel#labLogo{image:url(:/image/logo.png);}"); ui->labLogo->setMinimumWidth(180); //主界面顶部标题流线型背景 qss.append("QLabel#labTitle{border-image:url(:/image/bg_title.png);}"); //主界面顶部右上角 qss.append("QWidget#widgetMenu QAbstractButton{" "border:0px solid #FF0000;}"); qss.append("QWidget#widgetMenu QAbstractButton:hover," "QWidget#widgetMenu QAbstractButton:pressed{" "background:#067DB8;}"); //主界面 qss.append("QWidget#widgetMain{background-color:rgba(29,34,40,220);}"); //主界面堆栈窗体 qss.append("QWidget#stackedWidgetMain{background-color:rgba(29,34,40,240);}"); //操作按钮面板 qss.append("QWidget[flag=\"btn\"]{background-color:rgba(29,34,40,255);}"); qss.append("QWidget[flag=\"btn\"] QAbstractButton{" "border-radius:5px;border:none;color:#F7F7F7;" "background-color:rgba(56,60,69,255);}"); qss.append("QWidget[flag=\"btn\"] QAbstractButton:hover," "QWidget[flag=\"btn\"] QAbstractButton:pressed{" "border:2px solid #03C5ED;" "background-color:rgba(24,189,155,100);}"); //右下角操作按钮面板 qss.append("QWidget[flag=\"arming\"]{background-color:rgba(29,34,40,230);}"); qss.append("QWidget[flag=\"arming\"] QAbstractButton{" "border-radius:5px;border:none;color:#F7F7F7;" "background-color:rgba(9,115,171,255);}"); qss.append("QWidget[flag=\"arming\"] QAbstractButton:hover," "QWidget[flag=\"arming\"] QAbstractButton:pressed{" "border:2px solid #03C5ED;" "background-color:rgba(37,116,221,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("QWidget[flag=\"check\"] QAbstractButton{" "border-image:url(:/image/btn_check_off1.png);}"); qss.append("QWidget[flag=\"check\"] QAbstractButton:checked{" "border-image:url(:/image/btn_check_on1.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:#FFFFFF;gridline-color:#517DA5;}"); //表格头部样式,所有子界面共用 qss.append(QString("QHeaderView::section,QTableCornerButton:section{" "font:%1px;background:#102C38;border:1px solid #617D90;}").arg(20)); //滑块条样式 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::initBtn() { QString color = "#F7F7F7"; int iconSize = 20; int iconWidth = 40; int iconHeight = 30; QFont btnFont; btnFont.setPixelSize(20); QList icons; icons << 0xf23e << 0xf108 << 0xf0e8 << 0xf03e << 0xf0a6; icons << 0xf037 << 0xf03d << 0xf085 << 0xf002 << 0xf022; icons << 0xf023 << 0xf13e << 0xf09c << 0xf03e; QList btns; btns << ui->btnDefenceView << ui->btnVideoView << ui->btnDefenceInfo << ui->btnMapInfo << ui->btnDefencePosition; btns << ui->btnDefenceLine << ui->btnVideoInfo << ui->btnSystemConfig << ui->btnLogInfo << ui->btnAlarmVideo; btns << ui->btnArming << ui->btnDisarming << ui->btnBypass << ui->btnMap; for (int i = 0; i < btns.count(); i++) { if (i >= 10) { iconWidth = 30; } QPixmap pix = IconHelper::getPixmap(color, icons.at(i), iconSize, iconWidth, iconHeight); QPushButton *btn = btns.at(i); btn->setIconSize(QSize(iconWidth, iconHeight)); btn->setIcon(QIcon(pix)); btn->setFont(btnFont); btn->setText(btn->text() + " "); connect(btn, SIGNAL(pressed()), this, SLOT(buttonClick())); } } void frmMain::initTableWidget() { int row = 19; ui->tableWidget->setColumnCount(2); ui->tableWidget->setColumnWidth(0, 80); ui->tableWidget->setColumnWidth(1, 100); ui->tableWidget->setRowCount(row); QStringList headText; headText << "时间" << "消息"; ui->tableWidget->setHorizontalHeaderLabels(headText); ui->tableWidget->verticalHeader()->setDefaultSectionSize(30); ui->tableWidget->horizontalHeader()->setFixedHeight(40); ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); ui->tableWidget->verticalHeader()->setVisible(false); ui->tableWidget->horizontalHeader()->setStretchLastSection(true); QStringList content; content << "防区010报警" << "防区010故障" << "防区010恢复" << "防区010旁路" << "用户布防" << "用户撤防" << "用户旁路"; for (int i = 0; i < row; i++) { QTableWidgetItem *itemTime = new QTableWidgetItem(TIME); QTableWidgetItem *itemMsg = new QTableWidgetItem(content.at(rand() % 7)); itemTime->setTextAlignment(Qt::AlignCenter); itemMsg->setTextAlignment(Qt::AlignCenter); ui->tableWidget->setItem(i, 0, itemTime); ui->tableWidget->setItem(i, 1, itemMsg); } } void frmMain::buttonClick() { QPushButton *btn = (QPushButton *)sender(); if (btn == ui->btnArming) { frmArming::Instance()->show(); } else if (btn == ui->btnDefenceView) { ui->label->setStyleSheet("QLabel{font:70px;color:#ABD6FF;border-image:url(:/image/map.jpg);}"); ui->label->setText(""); } else { ui->label->setStyleSheet("QLabel{font:70px;color:#ABD6FF;border-image:url(:/image/map1.jpg);}"); ui->label->setText(btn->text().trimmed()); } } void frmMain::on_btnMenu_Min_clicked() { showMinimized(); } void frmMain::on_btnMenu_Max_clicked() { static bool max = false; static QRect location = this->geometry(); if (max) { this->setGeometry(location); } else { location = this->geometry(); this->setGeometry(QUIHelper::getScreenRect()); } this->setProperty("canMove", max); max = !max; } void frmMain::on_btnMenu_Close_clicked() { exit(0); }