#include "frmmain.h" #include "ui_frmmain.h" #include "quihelper.h" #include "frmplot.h" #include "frmpilot.h" #include "frmcount.h" #include "frmvalue.h" #include "frmdata.h" frmMain::frmMain(QWidget *parent) : QWidget(parent), ui(new Ui::frmMain) { ui->setupUi(this); this->initForm(); this->initWidget(); } frmMain::~frmMain() { delete ui; } void frmMain::showEvent(QShowEvent *) { static bool isInit = false; if (!isInit) { isInit = true; initIcon(ui->btnPlot, ":/image/btnnav1.png"); initIcon(ui->btnPilot, ":/image/btnnav2.png"); initIcon(ui->btnCount, ":/image/btnnav3.png"); initIcon(ui->btnValue, ":/image/btnnav4.png"); initIcon(ui->btnData, ":/image/btnnav5.png"); initIcon(ui->btnOther, ":/image/btnnav6.png"); } } void frmMain::initForm() { //设置样式 QStringList list; //去掉所有边框虚线 list.append(QString("*{outline:none;}")); //主窗体背景 list.append(QString("#widgetMain{background:rgb(0,139,207);}")); //标题栏样式 list.append(QString("#labTitle{font:%1px;font-weight:bold;color:rgb(255,255,255);}").arg(18)); //底部导航栏按钮样式,选中边框加粗 list.append(QString("#widgetNav>QPushButton{padding:0px;border-radius:5px;border:1px solid #008BCF;background:#85BEE8;}")); list.append(QString("#widgetNav>QPushButton:checked,#widgetNav>QPushButton:pressed{border-width:3px;}")); //底部导航翻页按钮 list.append(QString("#btnPre{border-image:url(:/image/btnnav0.png);}")); list.append(QString("#btnNext{border-image:url(:/image/btnnav10.png);}")); //右侧统计面板 list.append(QString("#frameCount>QLabel{font:%1px;font-weight:bold;}").arg(17)); list.append(QString("#frameCount>#labOk,#frameCount>#labOkUnit{color:rgb(0,166,0);}")); list.append(QString("#frameCount>#labError,#frameCount>#labErrorUnit{color:rgb(255,0,0);}")); list.append(QString("#frameCount>#labAll,#frameCount>#labAllUnit{color:rgb(24,189,155);}")); //悬浮按钮组样式,正常状态边框颜色背景透明+选中状态边框和背景色 list.append(QString("QWidget[flag=\"plotbtn\"]>QPushButton{border-radius:5px;border:2px solid #A0A0A0;background:none;}")); list.append(QString("QWidget[flag=\"plotbtn\"]>QPushButton:checked{border-color:rgba(34,163,169,250);background:rgba(34,163,169,100);}")); //实时数值显示面板边框 list.append(QString("QWidget[border=\"bold\"]{border:3px dashed #008BCF;}")); list.append(QString("QWidget[border=\"bold\"]>QLabel{padding:0px;}")); //实时数值显示面板标签 list.append(QString("#labXChannel,#labXPeak1,#labXPeak2{font:%1px;}#labXUnit{font:%2px;}#labXValue{font:%3px;font-weight:bold;}") .arg(18).arg(30).arg(100)); list.append(QString("#labYChannel,#labYPeak1,#labYPeak2{font:%1px;}#labYUnit{font:%2px;}#labYValue{font:%3px;font-weight:bold;}") .arg(18).arg(30).arg(100)); //常规按钮样式 list.append(QString("QPushButton{color:rgb(255,255,255);background:rgb(0,139,207);border:none;border-radius:5px;}")); list.append(QString("QPushButton:hover,QPushButton:pressed{background:rgb(34,163,169);}")); //表格样式 list.append(QString("QTableView{border:3px solid #23A3C8;background:#D3E6F6;}")); list.append(QString("QTableView{gridline-color:#36BEC0;}")); list.append(QString("QTableView::item:selected{color:#FFFFFF;background:#36BEC0;}")); list.append(QString("QTableView::item:hover{color:#FFFFFF;background:#36BEC0;}")); //表格头部样式,所有子界面共用 list.append(QString("QHeaderView::section,QTableCornerButton:section{color:#FFFFFF;background:#23A3C8;border:1px solid #FFFFFF;}")); //表格特殊样式 list.append(QString("QTableWidget[flag=\"nobg\"]::item{margin:5px;}")); list.append(QString("QTableWidget[flag=\"nobg\"]::item:selected{color:#FFFFFF;background:#D3E6F6;}")); list.append(QString("QTableWidget[flag=\"nobg\"]::item:hover{color:#FFFFFF;background:#D3E6F6;}")); //滚动条样式 list.append(QString("QScrollBar:vertical{background:#D3E6F6;padding:0px;min-width:30px;max-width:30px;}" "QScrollBar::handle:vertical{background:#23A3C8;min-height:120px;border-radius:0px;}" "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;}")); //数码管样式 list.append(QString("QLCDNumber{background:rgb(30,30,30);color:rgb(255,255,0);}")); //整体画板背景色 qApp->setPalette(QColor(211, 230, 246)); qApp->setStyleSheet(list.join("")); } void frmMain::initWidget() { frmPlot *plot = new frmPlot; ui->stackedWidget->addWidget(plot); frmPilot *pilot = new frmPilot; ui->stackedWidget->addWidget(pilot); frmCount *count = new frmCount; ui->stackedWidget->addWidget(count); frmValue *value = new frmValue; ui->stackedWidget->addWidget(value); frmData *data = new frmData; ui->stackedWidget->addWidget(data); //将按钮添加到按钮组 btns = new QButtonGroup(this); #if (QT_VERSION >= QT_VERSION_CHECK(6,0,0)) connect(btns, SIGNAL(idClicked(int)), this, SLOT(buttonClicked(int))); #else connect(btns, SIGNAL(buttonClicked(int)), this, SLOT(buttonClicked(int))); #endif btns->addButton(ui->btnPlot, 0); btns->addButton(ui->btnPilot, 1); btns->addButton(ui->btnCount, 2); btns->addButton(ui->btnValue, 3); btns->addButton(ui->btnData, 4); btns->addButton(ui->btnOther, 5); btns->addButton(ui->btnOther1, 6); btns->addButton(ui->btnOther2, 7); btns->addButton(ui->btnOther3, 8); ui->btnPlot->click(); } void frmMain::initIcon(QPushButton *btn, const QString &iconName) { int width = btn->width() - 10; int height = btn->height() - 10; QPixmap pix(iconName); if (!pix.isNull()) { pix = pix.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation); btn->setIconSize(QSize(width, height)); btn->setIcon(QIcon(pix)); } } void frmMain::buttonClicked(int index) { currentIndex = index; QString text; if (index == 0) { text = "过程: 当前曲线"; } else if (index == 1) { text = "过程: 测量结果"; } else if (index == 2) { text = "过程: 统计"; } else if (index == 3) { text = "过程: 数值表"; } else if (index == 4) { text = "过程: 实时值"; } else if (index == 5) { text = "过程: 历史曲线"; } else if (index == 6) { text = "设置: 曲线设置"; } ui->labTitle->setText(QString("[%1] %2").arg(AppConfig::DeviceName).arg(text)); ui->stackedWidget->setCurrentIndex(index); } void frmMain::on_btnPre_clicked() { if (currentIndex > 0) { btns->button(currentIndex - 1)->click(); } } void frmMain::on_btnNext_clicked() { if (currentIndex < btns->buttons().count() - 1) { btns->button(currentIndex + 1)->click(); } }