#pragma execution_character_set("utf-8") #include "frmmain.h" #include "ui_frmmain.h" #include "quihelper.h" #include "iconhelper.h" #include "flatui.h" #include "gaugecar.h" #include "gaugespeed.h" #include "gaugeprogressbar.h" #include "progressbarwater.h" #ifdef __arm__ #ifdef Q_OS_ANDROID #define borderRadius 8 #define titleHeight 80 #define iconSize 100 #define iconWidth 150 #define iconHeight 110 #define navIcoWidth 50 #define navBtnWidth 80 #else #define borderRadius 8 #define titleHeight 80 #define iconSize 150 #define iconWidth 200 #define iconHeight 180 #define navIcoWidth 55 #define navBtnWidth 100 #endif #else #define borderRadius 3 #define titleHeight 40 #define iconSize 35 #define iconWidth 70 #define iconHeight 50 #define navIcoWidth 22 #define navBtnWidth 45 #endif frmMain::frmMain(QWidget *parent) : QWidget(parent), ui(new Ui::frmMain) { ui->setupUi(this); this->initForm(); this->initTab1(); this->initTab2(); this->initTab3(); } frmMain::~frmMain() { delete ui; } void frmMain::initForm() { #ifdef __arm__ ui->page->layout()->setMargin(20); ui->page->layout()->setSpacing(15); #else this->setProperty("canMove", true); #endif //设置无边框 QUIHelper::setFramelessForm(this); ui->labTitle->setText("超级访客机"); this->setWindowTitle(ui->labTitle->text()); ui->stackedWidget->setCurrentIndex(0); ui->widgetTop->setProperty("flag", "nav"); ui->widgetTop->setFixedHeight(titleHeight); IconHelper::setIcon(ui->btnReturn, 0xf073, navIcoWidth); IconHelper::setIcon(ui->btnMsg, 0xf27a, navIcoWidth); QStringList qss; //全局无焦点虚边框,全局文字颜色,全局字号 qss.append(QString("*{outline:0px;color:#FEFEFE;}")); //主窗体背景 qss.append(QString("QWidget#widgetMain{background:#0E1A32;}")); //标题字体大小 qss.append(QString("QLabel#labTitle{font:%1px;}").arg(navIcoWidth)); //顶部导航 qss.append(QString("QWidget[flag=\"nav\"]{background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1," "stop:0 %1,stop:1 %2);}").arg("#00688B").arg("#093746")); qss.append(QString("QWidget[flag=\"nav\"] QAbstractButton{background:none;border:none;" "min-width:%1px;max-width:%1px;}").arg(navBtnWidth)); this->setStyleSheet(qss.join("")); QList listColorBg; listColorBg << "#486795" << "#2F4F4F" << "#BA5656" << "#8D44AF" << "#16A086" << "#1570A5" << "#2D3E50" << "#9B59BB" << "#FE781F"; QList listColorText; listColorText << "#FEFEFE" << "#FEFEFE" << "#FEFEFE" << "#FEFEFE" << "#FEFEFE" << "#FEFEFE" << "#FEFEFE" << "#FEFEFE" << "#FEFEFE"; QList listChar; listChar << 0xf2ba << 0xf002 << 0xf2c2 << 0xf02f << 0xf21b << 0xf0f0 << 0xf013 << 0xf014 << 0xf021; QList listText; listText << "访客登记" << "记录查询" << "证件扫描" << "信息打印" << "教师管理" << "学生管理" << "系统设置" << "恢复出厂" << "系统重启"; btns << ui->btn1 << ui->btn2 << ui->btn3 << ui->btn4 << ui->btn5 << ui->btn6 << ui->btn7 << ui->btn8 << ui->btn9; for (int i = 0; i < btns.count(); i++) { QToolButton *btn = btns.at(i); btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); btn->setIconSize(QSize(iconWidth, iconHeight)); QPixmap pix = IconHelper::getPixmap(listColorText.at(i), listChar.at(i), iconSize, iconWidth, iconHeight); btn->setIcon(QIcon(pix)); btn->setText(listText.at(i)); QStringList list; list.append(QString("QToolButton{font:%1px;background:%2;}").arg(iconSize / 2).arg(listColorBg.at(i))); list.append(QString("QToolButton{border:none;border-radius:%1;padding:20px;}").arg(borderRadius)); list.append(QString("QToolButton:pressed{background:%1;}").arg("#737A97")); btn->setStyleSheet(list.join("")); connect(btn, SIGNAL(clicked(bool)), this, SLOT(buttonClicked())); } } void frmMain::initTab1() { GaugeCar *bar1 = new GaugeCar; bar1->setShowOverlay(true); GaugeSpeed *bar2 = new GaugeSpeed; bar2->setAnimation(true); bar2->setTextColor("#FEFEFE"); QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(0, 100); slider->setFixedHeight(titleHeight); connect(slider, SIGNAL(valueChanged(int)), bar1, SLOT(setValue(int))); connect(slider, SIGNAL(valueChanged(int)), bar2, SLOT(setValue(int))); FlatUI::setSliderQss(slider, titleHeight / 2); slider->setValue(60); QVBoxLayout *lay = new QVBoxLayout; lay->addWidget(bar1); lay->addWidget(bar2); lay->addWidget(slider); ui->page1->setLayout(lay); } void frmMain::initTab2() { GaugeProgressBar *bar1 = new GaugeProgressBar; GaugeProgressBar *bar2 = new GaugeProgressBar; bar2->setPointerStyle(GaugeProgressBar::PointerStyle_IndicatorR); bar2->setProgressColor("#16A086"); QVBoxLayout *lay = new QVBoxLayout; lay->addWidget(bar1); lay->addWidget(bar2); ui->page2->setLayout(lay); } void frmMain::initTab3() { ProgressBarWater *bar1 = new ProgressBarWater; ProgressBarWater *bar2 = new ProgressBarWater; bar1->setValue(60); bar1->setPercentStyle(ProgressBarWater::PercentStyle_Circle); bar2->setValue(80); bar2->setPercentStyle(ProgressBarWater::PercentStyle_Circle); bar2->setUsedColor("#16A086"); QVBoxLayout *lay = new QVBoxLayout; lay->addWidget(bar1); lay->addWidget(bar2); ui->page3->setLayout(lay); } void frmMain::initAnimation(QWidget *w) { QPropertyAnimation *animation = new QPropertyAnimation(w, "geometry"); animation->setDuration(200); animation->setStartValue(QRect(width(), 0, width(), height() - titleHeight)); animation->setEndValue(QRect(0, 0, width(), height() - titleHeight)); animation->setEasingCurve(QEasingCurve::InQuad); animation->start(QPropertyAnimation::DeleteWhenStopped); } void frmMain::buttonClicked() { QToolButton *btn = (QToolButton *)sender(); ui->labTitle->setText(btn->text()); IconHelper::setIcon(ui->btnReturn, 0xf122, navIcoWidth); if (btn == ui->btn1) { ui->stackedWidget->setCurrentIndex(1); this->initAnimation(ui->page1); } else if (btn == ui->btn2) { ui->stackedWidget->setCurrentIndex(2); this->initAnimation(ui->page2); } else if (btn == ui->btn9) { exit(0); } else { ui->stackedWidget->setCurrentIndex(3); this->initAnimation(ui->page3); } } void frmMain::on_btnReturn_clicked() { int index = ui->stackedWidget->currentIndex(); if (index != 0) { ui->stackedWidget->setCurrentIndex(0); ui->labTitle->setText("超级访客机"); IconHelper::setIcon(ui->btnReturn, 0xf073, navIcoWidth); } } void frmMain::on_btnMsg_clicked() { exit(0); }