#include "sheetwidget.h" #include "ui_sheetwidget.h" SheetWidget::SheetWidget(QWidget *parent) : QWidget(parent), ui(new Ui::SheetWidget) { ui->setupUi(this); setWindowFlags (Qt::Window | Qt::FramelessWindowHint); setWindowModality(Qt::ApplicationModal); initWidget(); initControl(); } SheetWidget::~SheetWidget() { delete ui; } void SheetWidget::initWidget() { m_btnPerPage = COLUMN_NUM * ROW_NUM; m_curPages = 0; m_pageNums = 1; m_reType = RETYPE_X; memset(&m_frameAngleParaValues, 0, sizeof(EmbMvAng)); m_sheetBtnList.clear(); m_sheetHLabelList.clear(); m_sheetVLabelList.clear(); m_itemXList.clear(); m_itemYList.clear(); #if(0) for(int i = 0; i < MAX_VER; i++) { for(int j = 0; j < MAX_HOR; j++) { m_itemXList.append(0); m_itemYList.append(1); } } #endif //动框角度调节 for(int i = 0; i < ROW_NUM; i++) { for(int j = 0; j < COLUMN_NUM; j++) { QPushButton *buttonSheet = new QPushButton(ui->frameSheet); m_sheetBtnList.append(buttonSheet); connect(buttonSheet, SIGNAL(clicked()), this, SLOT(slotSheetBtnClicked()) ); } } for(int i = 0; i < COLUMN_NUM; i++) { QLabel *labelH = new QLabel(this); m_sheetHLabelList.append(labelH); } for(int i = 0; i < ROW_NUM; i++) { QLabel *labelV = new QLabel(this); m_sheetVLabelList.append(labelV); } } void SheetWidget::initControl() { //根据不同分辨率设置控件的位置和尺寸 switch (g_emResolut) { case resolution1910: initResolution1910(); break; case resolution1006: initResolution1006(); break; default: this->resize(1920,1080); break; } initControlStyle();//初始化窗体控件样式 } void SheetWidget::initResolution1910() { this->resize(1920,1080); ui->buttonTypeLogo->setGeometry(128,66,78,78); ui->labelMainTitle->setGeometry(226,60,1000,44); ui->labelSubTitle->setGeometry(302,112,1000,36); ui->frameBack->setGeometry(0,0,1920,1080); ui->frameSheet->setGeometry(176,244,1680,880); ui->labelXY->setGeometry(84,190,56,48); ui->frameRightUp->setGeometry(1468,92,406,72); ui->buttonParaRestore->setGeometry(340,0,66,66); ui->buttonSwitchXY->setGeometry(252,0,66,66); for(int i = 0; i < ROW_NUM; i++) { for(int j = 0; j < COLUMN_NUM; j++) { m_sheetBtnList[i*COLUMN_NUM+j]->setGeometry(3+j*140,3+i*88,140,88); } } for(int i = 0; i < COLUMN_NUM; i++) { m_sheetHLabelList[i]->setGeometry(206+i*140,160,140,72); } for(int i = 0; i < ROW_NUM; i++) { m_sheetVLabelList[i]->setGeometry(36,245+i*88,140,88); } ui->labelPageNum->setGeometry(32,1008,400,40); ui->framePageBtn->setGeometry(920,990,1000,70); ui->buttonPgUp->setGeometry(200,0,168,70); ui->buttonPgDn->setGeometry(400,0,168,70); ui->buttonOk->setGeometry(600,0,168,70); ui->buttonCancel->setGeometry(800,0,168,70); } void SheetWidget::initResolution1006() { this->resize(1024,600); ui->buttonTypeLogo->setGeometry(25,30,60,60); ui->labelMainTitle->setGeometry(100,30,200,24); ui->labelSubTitle->setGeometry(130,64,240,21); ui->frameBack->setGeometry(0,0,1024,600); ui->frameSheet->setGeometry(102,138,994,484); ui->labelXY->setGeometry(44,100,56,48); ui->frameRightUp->setGeometry(800,40,800,61); ui->buttonParaRestore->setGeometry(150,0,50,50); ui->buttonSwitchXY->setGeometry(93,0,50,50); for(int i = 0; i < ROW_NUM; i++) { for(int j = 0; j < COLUMN_NUM; j++) { m_sheetBtnList[i*COLUMN_NUM+j]->setGeometry(3+j*72,3+i*48,72,48); } } for(int i = 0; i < COLUMN_NUM; i++) { m_sheetHLabelList[i]->setGeometry(120+i*72,94,72,40); } for(int i = 0; i < ROW_NUM; i++) { m_sheetVLabelList[i]->setGeometry(30,139+i*48,72,48); } ui->labelPageNum->setGeometry(20,550,102,45); ui->framePageBtn->setGeometry(489,545,600,40); ui->buttonPgUp->setGeometry(106,0,96,40); ui->buttonPgDn->setGeometry(212,0,96,40); ui->buttonOk->setGeometry(318,0,96,40); ui->buttonCancel->setGeometry(424,0,96,40); } void SheetWidget::initControlStyle() { SetControlStyle setControlStyle; setControlStyle.setUiName(this->objectName()); QString frameBackImgPath = setControlStyle.getStyleSheet(this->objectName()); ui->frameBack->setStyleSheet(frameBackImgPath); ui->labelXY->setFont(fontNormal_1); ui->labelXY->setStyleSheet(LABELWHITESTYLE); ui->labelMainTitle->setFont(fontBold_1); ui->labelMainTitle->setStyleSheet(LABELWHITESTYLE); ui->labelSubTitle->setFont(fontNormal_1); ui->labelSubTitle->setStyleSheet(LABELWHITESTYLE); ui->frameRightUp->setStyleSheet(TRANSPARENTSTYLE); ui->buttonParaRestore->setGreenGradientBottomStyle(BORDER_RADIUS1); ui->buttonParaRestore->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonParaRestore->objectName())); ui->buttonSwitchXY->setGreenGradientBottomStyle(BORDER_RADIUS1); ui->buttonSwitchXY->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonSwitchXY->objectName())); for(int i = 0; i < COLUMN_NUM; i++) { m_sheetHLabelList[i]->setText(QString::number(i+1)+"mm"); m_sheetHLabelList[i]->setFont(fontNormal_1); m_sheetHLabelList[i]->setStyleSheet(LABELWHITESTYLE); m_sheetHLabelList[i]->setAlignment(Qt::AlignCenter); m_sheetHLabelList[i]->setAlignment(Qt::AlignBottom); } for(int i = 0; i < ROW_NUM; i++) { m_sheetVLabelList[i]->setText(QString::number((i+1)*100)+"rpm"); m_sheetVLabelList[i]->setFont(fontNormal_1); m_sheetVLabelList[i]->setStyleSheet(LABELWHITESTYLE); m_sheetVLabelList[i]->setAlignment(Qt::AlignRight); m_sheetVLabelList[i]->setAlignment(Qt::AlignCenter); } ui->frameSheet->setStyleSheet(TRANSPARENTSTYLE); for(int i = 0; i < ROW_NUM; i++) { for(int j = 0; j < COLUMN_NUM; j++) { m_sheetBtnList[i*COLUMN_NUM+j]->setStyleSheet(BUTTONSHEETSTYLE); m_sheetBtnList[i*COLUMN_NUM+j]->setFont(fontNormal_1); } } ui->framePageBtn->setStyleSheet(TRANSPARENTSTYLE); ui->labelPageNum->setFont(fontNormal_1); ui->labelPageNum->setStyleSheet(LABELWHITESTYLE); //按钮样式表 ui->buttonPgUp->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonPgUp->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgUp->objectName()),12); ui->buttonPgDn->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonPgDn->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgDn->objectName()),12); ui->buttonOk->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonOk->objectName()),12); ui->buttonCancel->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonCancel->objectName()),12); } //刷新参数数值 void SheetWidget::refreshValues() { m_itemXList.clear(); m_itemYList.clear(); for(int i = 0; i < MAX_VER; i++) { for(int j = 0; j < MAX_HOR; j++) { u16 valueX = m_frameAngleParaValues.xMvStAng[i][j]; u16 valueY = m_frameAngleParaValues.yMvStAng[i][j]; m_itemXList.append(valueX); m_itemYList.append(valueY); } } } //设置类型图标 void SheetWidget::setTypeLogo(QString tStyle) { ui->buttonTypeLogo->setUnPreBtnLogo(tStyle); } //设置主title void SheetWidget::setMainTitle(QString str) { ui->labelMainTitle->setText(str); } //设置副title void SheetWidget::setSubTitle(QString str) { ui->labelSubTitle->setText(str); } //刷新界面显示 void SheetWidget::refreshPageUi() { QList itemList; if(m_reType == RETYPE_X) { itemList = m_itemXList; } else { itemList = m_itemYList; } ui->buttonSwitchXY->setEnabled(true); ui->buttonParaRestore->setEnabled(true); ui->buttonOk->setEnabled(true); int itemNum; if (itemList.size() <= 0) { itemNum = 0; for (int i = 0; i < m_btnPerPage; i++) { m_sheetBtnList.at(i)->hide(); } ui->labelPageNum->setText(tr("PageNum: 0/0"));//页数: 0/0 ui->buttonPgUp->setEnabled(false); ui->buttonPgDn->setEnabled(false); ui->buttonSwitchXY->setEnabled(false); ui->buttonParaRestore->setEnabled(false); ui->buttonOk->setEnabled(false); return; } else { itemNum = itemList.size(); } m_pageNums = (itemNum + m_btnPerPage - 1)/m_btnPerPage;// 计算页数 if (m_curPages > m_pageNums)// 当前页 { m_curPages = m_pageNums; } if (m_curPages <= 1) { m_curPages = 1; } int itemidx = (m_curPages - 1) * m_btnPerPage; for (int i = 0; i < m_btnPerPage; i++) { if (itemidx < itemNum) { m_sheetBtnList.at(i)->setText(QString::number(itemList[itemidx])); m_sheetBtnList.at(i)->show(); itemidx++; } else { m_sheetBtnList.at(i)->hide(); } } for (int i = 0; i < ROW_NUM; i++) { int labelIdx = (m_curPages - 1) * ROW_NUM + i; if(labelIdx < MAX_VER) { m_sheetVLabelList[i]->show(); m_sheetVLabelList[i]->setText(QString::number((ROW_NUM*(m_curPages-1)+i+1)*100)+"rpm"); } else { m_sheetVLabelList[i]->hide(); } } // 翻页按钮 if (m_curPages <= 1) { ui->buttonPgUp->setEnabled(false); } else { ui->buttonPgUp->setEnabled(true); } if (m_curPages >= m_pageNums) { ui->buttonPgDn->setEnabled(false); } else { ui->buttonPgDn->setEnabled(true); } // 页信息 if(m_pageNums == 0) { m_curPages = 0; } // 页信息 QString str = tr("pageNum: ") + QString("%1/%2").arg(m_curPages).arg(m_pageNums);//页数: ui->labelPageNum->setText(str); } void SheetWidget::show() { //等于机器参数或工作参数 if (g_pMachine != NULL) { if(g_pMachine->isConnected() == 3) { g_pMachine->getParasFromMachine(MVSTANG_PARA); } else { #ifdef Q_OS_LINUX//为了方便windows下查看参数所以加了linux编译条件 PromptDialog dlg(this); dlg.initDialog(PromptDialog::BTN_OK); dlg.setTitleStr(tr("Network error")); dlg.setContentStr(tr("No connection")); dlg.exec(); return; #endif } } refreshPageUi(); QWidget::show(); } //表格中按钮被点击 void SheetWidget::slotSheetBtnClicked() { MyButton *button = (MyButton*) this->sender() ; if(button == NULL) { return; } u16 value = button->text().toInt(); NumerInputDialog ndlg(this); ndlg.setTitleStr(tr("Frame angle")); ndlg.setUnitStr(tr("deg")); ndlg.setValueAndRange(value, 0, 360, 0, 0, 240); if (ndlg.exec() == 1) { u16 val = ndlg.getValue(); if (val != value) { button->setText(QString::number(val)); for(int i = 0; i < m_sheetBtnList.size(); i++) { if(button == m_sheetBtnList[i]) { if(m_reType == RETYPE_X) { m_itemXList[(m_curPages-1)*m_btnPerPage+i] = val; } else if(m_reType == RETYPE_Y) { m_itemYList[(m_curPages-1)*m_btnPerPage+i] = val; } break; } } } } } void SheetWidget::on_buttonPgUp_clicked() { m_curPages--; refreshPageUi(); } void SheetWidget::on_buttonPgDn_clicked() { m_curPages++; refreshPageUi(); } void SheetWidget::on_buttonOk_clicked() { for(int i = 0; i < MAX_VER; i++) { for(int j = 0; j < MAX_HOR; j++) { m_frameAngleParaValues.xMvStAng[i][j] = m_itemXList[i*MAX_HOR+j]; m_frameAngleParaValues.yMvStAng[i][j] = m_itemYList[i*MAX_HOR+j]; } } if(g_pMachine != NULL) { g_pMachine->setFrameAnglePara(&m_frameAngleParaValues); } this->hide(); } void SheetWidget::on_buttonCancel_clicked() { this->hide(); } //切换xy void SheetWidget::on_buttonSwitchXY_clicked() { if(m_reType == RETYPE_X) { m_reType = RETYPE_Y; ui->labelXY->setText("Y"); } else { m_reType = RETYPE_X; ui->labelXY->setText("X"); } m_curPages = 1; refreshPageUi(); } //还原回默认参数 void SheetWidget::on_buttonParaRestore_clicked() { PromptDialog promptDlg(this); promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL); promptDlg.setTitleStr(tr("Prompt")); promptDlg.setContentStr(tr("Whether to recover the default parameters for the frame angle?"));//是否恢复为动框角度默认参数? if(promptDlg.exec() == 1) { if(g_pMachine != NULL) { g_pMachine->setToDefaultParas(UCMD_SET_MVANGDEF_PARA, 0); } } } //动框角度参数改变 void SheetWidget::slotFrameAngleParaChange(int type, int id) { if (type == MVSTANG_PARA) { if (id == 0) { memcpy(&m_frameAngleParaValues, &g_pMachine->getFrameAnglePara(), sizeof(EmbMvAng)); } } refreshValues(); refreshPageUi(); }