#include "needlebarsetwidget.h" #include "ui_needlebarsetwidget.h" NeedleBarSetWidget::NeedleBarSetWidget(QWidget *parent) : QWidget(parent), ui(new Ui::NeedleBarSetWidget), m_pEmbNeedleBtn(NULL), m_pColorBtn(NULL) { ui->setupUi(this); setWindowFlags (Qt::Window | Qt::FramelessWindowHint); setWindowModality(Qt::ApplicationModal); initWidget(); initControl(); } NeedleBarSetWidget::~NeedleBarSetWidget() { delete ui; } void NeedleBarSetWidget::initWidget() { m_setType = 1; QDir apppath(qApp->applicationDirPath()); //配置文件路径 m_configFile = apppath.path() + apppath.separator() + "config.ini"; m_pColorBuf = (QRgb *)(g_pSettings->getColorRgbArray().data()); m_buttonStyle1 = "QPushButton{outline: none;border:0px solid rgb(0,0,0);border-style:inset;border-radius:5px;"; m_buttonStyle2 = "QPushButton:checked{outline: none;border:3px groove rgb(80,80,80);}"; m_embNeedleBtnList.clear(); int embNeedleItem = 32; for(int i = 0; i < embNeedleItem; i++) { MyButton *buttonEmbNeedle = new MyButton(ui->frameEmb); m_embNeedleBtnList.append(buttonEmbNeedle); connect(buttonEmbNeedle, SIGNAL(clicked()), this, SLOT(embNeedleBtnClick()) ); } int colorNumer = BF_SW_ND; //颜色数 m_colorBtnList.clear(); for(int i = 0; i < colorNumer; i++) { QPushButton *buttonColor = new QPushButton(ui->frameColor); m_colorBtnList.append(buttonColor); connect(buttonColor, SIGNAL(clicked()), this, SLOT(colorBtnClick()) ); } } void NeedleBarSetWidget::initControl() { //根据不同分辨率设置控件的位置和尺寸 switch (g_emResolut) { case resolution1910: initResolution1910(); break; case resolution1006: initResolution1006(); break; default: this->resize(1920,1080); break; } initControlStyle();//初始化窗体控件样式 } void NeedleBarSetWidget::initResolution1910() { this->resize(1920,1080); ui->frameBack->setGeometry(0,0,1920,1080); ui->buttonTypeLogo->setGeometry(128,66,78,78); ui->labelMainTitle->setGeometry(226,60,1000,44); ui->labelSubTitle->setGeometry(302,112,1000,36); ui->frameRightUp->setGeometry(1366,92,582,72); ui->buttonEmbSet->setGeometry(176,0,66,66); ui->buttonPunchSet->setGeometry(88,0,66,66); ui->buttonSewSet->setGeometry(0,0,66,66); ui->frameEmb->setGeometry(62,217,336,720); ui->labelEmbNeedleNum->setGeometry(10,0,228,48); ui->buttonEmbNeedleNum->setGeometry(240,0,94,48); for(int i = 0; i < 3; i++) { int num = 11; for(int j = 0; j < num; j++) { // 颜色显示 QRgb rgb = m_pColorBuf[((i*num+j) % MC_SW_ND)]; rgb |= 0xff000000; QColor bkcolor(rgb); QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168); QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";" + " color:" + tcolor.name() + ";"; if(i*num+j < m_embNeedleBtnList.size()) { m_embNeedleBtnList[i*num+j]->setGeometry(10+i*115,69+j*59,94,48); m_embNeedleBtnList[i*num+j]->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2); m_embNeedleBtnList[i*num+j]->setFont(fontNormal_1); m_embNeedleBtnList[i*num+j]->setText(QString::number(i*num+j+1)); } } } //右侧 ui->frameColor->setGeometry(422,218,1426,708); int hColorNum = 24; int vColorNum = 12; for(int i = 0; i < vColorNum; i++) { for(int j = 0; j < hColorNum; j++) { // 颜色显示 QRgb rgb = m_pColorBuf[((i*hColorNum+j) % MC_SW_ND)]; rgb |= 0xff000000; QColor bkcolor(rgb); QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";"; m_colorBtnList[i*hColorNum+j]->setGeometry(7+j*59,3+i*59,50,50); m_colorBtnList[i*hColorNum+j]->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2); } } ui->framePageBtn->setGeometry(1120,990,800,70); ui->buttonOk->setGeometry(600,0,168,70); } void NeedleBarSetWidget::initResolution1006() { this->resize(1024,600); ui->frameBack->setGeometry(0,0,1024,600); ui->buttonTypeLogo->setGeometry(25,30,60,60); ui->labelMainTitle->setGeometry(100,30,200,24); ui->labelSubTitle->setGeometry(130,64,240,21); ui->frameRightUp->setGeometry(663,40,338,61); ui->buttonEmbSet->setGeometry(114,0,50,50); ui->buttonPunchSet->setGeometry(57,0,50,50); ui->buttonSewSet->setGeometry(0,0,50,50); ui->frameEmb->setGeometry(30,90,221,441); ui->labelEmbNeedleNum->setGeometry(6,30,110,20); ui->buttonEmbNeedleNum->setGeometry(125,30,55,28); for(int i = 0; i < 3; i++) { int num = 11; for(int j = 0; j < num; j++) { // 颜色显示 QRgb rgb = m_pColorBuf[((i*num+j) % MC_SW_ND)]; rgb |= 0xff000000; QColor bkcolor(rgb); QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168); QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";" + " color:" + tcolor.name() + ";"; if(i*num+j < m_embNeedleBtnList.size()) { m_embNeedleBtnList[i*num+j]->setGeometry(5+i*63,62+j*34,54,29);//左侧颜色 m_embNeedleBtnList[i*num+j]->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2); m_embNeedleBtnList[i*num+j]->setFont(fontNormal_1); m_embNeedleBtnList[i*num+j]->setText(QString::number(i*num+j+1)); } } } ui->frameColor->setGeometry(236,125,735,420); int hColorNum = 24; int vColorNum = 12; for(int i = 0; i < vColorNum; i++) { for(int j = 0; j < hColorNum; j++) { // 颜色显示 QRgb rgb = m_pColorBuf[((i*hColorNum+j) % MC_SW_ND)]; rgb |= 0xff000000; QColor bkcolor(rgb); QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";"; m_colorBtnList[i*hColorNum+j]->setGeometry(3+j*32,3+i*32,26,26); m_colorBtnList[i*hColorNum+j]->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2); } } ui->framePageBtn->setGeometry(595,548,600,45); ui->buttonOk->setGeometry(318,0,96,40); } //初始化窗体控件样式 void NeedleBarSetWidget::initControlStyle() { SetControlStyle setControlStyle; setControlStyle.setUiName(this->objectName()); QString frameBackImgPath = setControlStyle.getStyleSheet(this->objectName()); ui->frameBack->setStyleSheet(frameBackImgPath); ui->frameEmb->setStyleSheet(TRANSPARENTSTYLE); ui->frameColor->setStyleSheet(TRANSPARENTSTYLE); ui->labelMainTitle->setFont(fontBold_1); ui->labelMainTitle->setStyleSheet(LABELWHITESTYLE); ui->labelSubTitle->setFont(fontNormal_1); ui->labelSubTitle->setStyleSheet(LABELWHITESTYLE); //右上方 ui->frameRightUp->setStyleSheet(TRANSPARENTSTYLE); ui->buttonEmbSet->setGreenGradientBottomStyle(BORDER_RADIUS1); ui->buttonEmbSet->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonEmbSet->objectName())); ui->buttonPunchSet->setGreenGradientBottomStyle(BORDER_RADIUS1); ui->buttonPunchSet->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonPunchSet->objectName())); ui->buttonSewSet->setGreenGradientBottomStyle(BORDER_RADIUS1); ui->buttonSewSet->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonSewSet->objectName())); ui->labelEmbNeedleNum->setFont(fontNormal_1); ui->labelEmbNeedleNum->setStyleSheet(LABELWHITESTYLE); ui->buttonEmbNeedleNum->setFont(fontNormal_1); ui->buttonOk->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonOk->objectName()),12); } void NeedleBarSetWidget::embNeedleBtnClick() { m_pEmbNeedleBtn = (QPushButton*) this->sender(); if(m_pEmbNeedleBtn == NULL) { return; } for(int i = 0; i < m_embNeedleBtnList.size(); i++) { m_embNeedleBtnList.at(i)->setChecked(false); m_embNeedleBtnList.at(i)->setCheckable(false); } m_pEmbNeedleBtn->setCheckable(true); m_pEmbNeedleBtn->setChecked(true); } void NeedleBarSetWidget::colorBtnClick() { m_pColorBtn = (QPushButton*) this->sender(); if(m_pColorBtn == NULL || m_pEmbNeedleBtn == NULL) { return; } int idx = 0; for(int i = 0; i < m_colorBtnList.size(); i++) { if(m_pColorBtn == m_colorBtnList.at(i)) { idx = i; } m_colorBtnList.at(i)->setChecked(false); m_colorBtnList.at(i)->setCheckable(false); } m_pColorBtn->setCheckable(true); m_pColorBtn->setChecked(true); QRgb rgb = m_pColorBuf[(idx % BF_SW_ND)]; rgb |= 0xff000000; QColor bkcolor(rgb); QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168); QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";" + " color:" + tcolor.name() + ";"; m_pEmbNeedleBtn->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2); //写入配置 for(int i = 0; i < m_embNeedleBtnList.size(); i++) { if(m_pEmbNeedleBtn == m_embNeedleBtnList.at(i)) { if(m_setType == SET_TYPE_NEEDLE_EMB) { g_pSettings->writeToIniFile("EmbNeedle/"+QString::number(i+1)+"_coloridx",QString::number(idx)); g_pCurEmbData->setNeedleColorTable(i,idx); emit siChangeNeedleColor(i,idx); } else if(m_setType == SET_TYPE_NEEDLE_PUNCH) { g_pSettings->writeToIniFile("PunchNeedle/"+QString::number(i+1)+"_coloridx",QString::number(idx)); g_pCurEmbData->setNeedleColorTable(i+EMB_NEEDLE_NUM,idx); emit siChangeNeedleColor(i+EMB_NEEDLE_NUM,idx); } else if(m_setType == SET_TYPE_NEEDLE_SEW) { g_pSettings->writeToIniFile("SewNeedle/"+QString::number(i+1)+"_coloridx",QString::number(idx)); g_pCurEmbData->setNeedleColorTable(i+EMB_NEEDLE_NUM+PUNCH_NEEDLE_NUM,idx); emit siChangeNeedleColor(i+EMB_NEEDLE_NUM+PUNCH_NEEDLE_NUM,idx); } break; } } } void NeedleBarSetWidget::setTypeLogo(QString tStyle) { ui->buttonTypeLogo->setUnPreBtnLogo(tStyle); } void NeedleBarSetWidget::setMainTitle(QString str) { ui->labelMainTitle->setText(str); } void NeedleBarSetWidget::setSubTitle(QString str) { ui->labelSubTitle->setText(str); } void NeedleBarSetWidget::initNeedleBar() { //标题显示 if(m_setType == SET_TYPE_NEEDLE_EMB) { ui->labelEmbNeedleNum->setText(tr("EmbNeedleNum:"));//绣花针杆个数: } else if(m_setType == SET_TYPE_NEEDLE_PUNCH) { ui->labelEmbNeedleNum->setText(tr("PunchNeedleNum:"));//冲孔针杆个数: } else if(m_setType == SET_TYPE_NEEDLE_SEW) { ui->labelEmbNeedleNum->setText(tr("SewNeedleNum:"));//缝纫针杆个数: } //读入配置 QFile iniFile(m_configFile); int num,idx; num = idx = 0; if(!iniFile.exists()) { num = 1; idx = 0; QRgb rgb = m_pColorBuf[(idx % BF_SW_ND)]; rgb |= 0xff000000; QColor bkcolor(rgb); QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168); QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";" + " color:" + tcolor.name() + ";"; for(int i = 0; i < m_embNeedleBtnList.size(); i++) { if(i < num) { m_embNeedleBtnList.at(i)->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2); m_embNeedleBtnList.at(i)->show(); } else { m_embNeedleBtnList.at(i)->hide(); } } } else { QRgb rgb = qRgb(0,255,0); if(m_setType == SET_TYPE_NEEDLE_EMB) { num = g_pSettings->readFromIniFile("EmbNeedle/number").toInt(); } else if(m_setType == SET_TYPE_NEEDLE_PUNCH) { num = g_pSettings->readFromIniFile("PunchNeedle/number").toInt(); } else if(m_setType == SET_TYPE_NEEDLE_SEW) { num = g_pSettings->readFromIniFile("SewNeedle/number").toInt(); } for(int i = 0; i < m_embNeedleBtnList.size(); i++)//32个针杆 { QString idxStr; if(m_setType == SET_TYPE_NEEDLE_EMB) { idxStr = "EmbNeedle/"+QString::number(i+1)+"_coloridx"; } else if(m_setType == SET_TYPE_NEEDLE_PUNCH) { idxStr = "PunchNeedle/"+QString::number(i+1)+"_coloridx"; } else if(m_setType == SET_TYPE_NEEDLE_SEW) { idxStr = "SewNeedle/"+QString::number(i+1)+"_coloridx"; } if(g_pSettings->ifKeyExists(idxStr) == true) { idx = g_pSettings->readFromIniFile(idxStr).toInt();//第几个针杆的颜色值 rgb = m_pColorBuf[(idx % BF_SW_ND)]; } else { rgb = m_pColorBuf[(i % MC_SW_ND)]; } rgb |= 0xff000000; QColor bkcolor(rgb); QColor tcolor = QColor(255-bkcolor.red(), 255-bkcolor.green(), 255-bkcolor.blue()).lighter(168); QString cstyle = "outline: none;background-color:" + bkcolor.name() + ";" + " color:" + tcolor.name() + ";"; if(i < num) { m_embNeedleBtnList.at(i)->setStyleSheet(m_buttonStyle1 + cstyle + "}" + m_buttonStyle2); m_embNeedleBtnList.at(i)->show(); } else { m_embNeedleBtnList.at(i)->hide(); } } } ui->buttonEmbNeedleNum->setText(QString::number(num)); } //刷新右上方按钮的显示,包括选中状态 void NeedleBarSetWidget::refreshTypeBtnShow() { ui->buttonEmbSet->setChecked(false);//不是选中状态,可见 ui->buttonEmbSet->setVisible(true); ui->buttonPunchSet->setChecked(false);//不是选中状态,可见 ui->buttonPunchSet->setVisible(true); ui->buttonSewSet->setChecked(false);//不是选中状态,可见 ui->buttonSewSet->setVisible(true); if(g_emResolut == resolution1910) { ui->buttonEmbSet->setGeometry(176,0,66,66); ui->buttonPunchSet->setGeometry(88,0,66,66); ui->buttonSewSet->setGeometry(0,0,66,66); } else if(g_emResolut == resolution1006) { ui->buttonEmbSet->setGeometry(114,0,50,50); ui->buttonPunchSet->setGeometry(57,0,50,50); ui->buttonSewSet->setGeometry(0,0,50,50); } if(g_emMacType == MACHINE_PUNCH_SEW) //等于冲缝机 { m_setType = SET_TYPE_NEEDLE_PUNCH; ui->labelEmbNeedleNum->setText(tr("PunchNeedleNum:"));//冲孔针杆个数: ui->buttonPunchSet->setCheckable(true);//设置绣花为默认选中 ui->buttonPunchSet->setChecked(true); ui->buttonEmbSet->setVisible(false); } else if(g_emMacType == MACHINE_PUNCH_SEW_EMB)//等于冲缝绣 { m_setType = SET_TYPE_NEEDLE_PUNCH; ui->labelEmbNeedleNum->setText(tr("PunchNeedleNum:"));//冲孔针杆个数: ui->buttonPunchSet->setCheckable(true);//设置绣花为默认选中 ui->buttonPunchSet->setChecked(true); ui->buttonEmbSet->setVisible(true); } else { m_setType = SET_TYPE_NEEDLE_PUNCH; ui->labelEmbNeedleNum->setText(tr("PunchNeedleNum:"));//冲孔针杆个数: ui->buttonEmbSet->setVisible(false); ui->buttonPunchSet->setVisible(false); ui->buttonSewSet->setVisible(false); } } //刷新针杆数量及颜色 void NeedleBarSetWidget::refreshNeedleColorShow() { ui->buttonEmbSet->setChecked(false); ui->buttonPunchSet->setChecked(false); ui->buttonSewSet->setChecked(false); initNeedleBar(); } void NeedleBarSetWidget::on_buttonEmbNeedleNum_clicked() { NumerInputDialog numberInputDlg; numberInputDlg.setTitleStr(tr("Number set"));//个数设置 numberInputDlg.setUnitStr(""); if(m_setType == SET_TYPE_NEEDLE_EMB) { numberInputDlg.setValueAndRange(ui->buttonEmbNeedleNum->text().toInt(), 1, 32, 0); } else if(m_setType == SET_TYPE_NEEDLE_PUNCH) { numberInputDlg.setValueAndRange(ui->buttonEmbNeedleNum->text().toInt(), 1, 15, 0); } else if(m_setType == SET_TYPE_NEEDLE_SEW) { numberInputDlg.setValueAndRange(ui->buttonEmbNeedleNum->text().toInt(), 1, 1, 0); } //针杆设置的弹窗点击确认按钮就写在配置文件了 if(numberInputDlg.exec() == 1) { s32 val = numberInputDlg.getValue(); ui->buttonEmbNeedleNum->setText(QString::number(val)); for(int i = 0; i < m_embNeedleBtnList.size(); i++) { if(i < val) { m_embNeedleBtnList.at(i)->show(); } else { m_embNeedleBtnList.at(i)->hide(); } } //写入配置 if(m_setType == SET_TYPE_NEEDLE_EMB) { g_pSettings->writeToIniFile("EmbNeedle/number",val); } else if(m_setType == SET_TYPE_NEEDLE_PUNCH) { g_pSettings->writeToIniFile("PunchNeedle/number",val); } else if(m_setType == SET_TYPE_NEEDLE_SEW) { g_pSettings->writeToIniFile("SewNeedle/number",val); } } } void NeedleBarSetWidget::on_buttonOk_clicked() { int embNum = g_pSettings->readFromIniFile("EmbNeedle/number").toInt(); for(int i = 0; i < embNum; i++) { QString idxStr = "EmbNeedle/"+QString::number(i+1)+"_coloridx"; if(g_pSettings->ifKeyExists(idxStr) == false) { g_pSettings->writeToIniFile("EmbNeedle/"+QString::number(i+1)+"_coloridx",QString::number(i+1)); g_pCurEmbData->setNeedleColorTable(i+1,i+1); emit siChangeNeedleColor(i,i+1); } } int punchNum = g_pSettings->readFromIniFile("PunchNeedle/number").toInt(); for(int i = 0; i < punchNum; i++) { QString idxStr = "PunchNeedle/"+QString::number(i+1)+"_coloridx"; if(g_pSettings->ifKeyExists(idxStr) == false) { g_pSettings->writeToIniFile("PunchNeedle/"+QString::number(i+1)+"_coloridx",QString::number(i+1)); g_pCurEmbData->setNeedleColorTable(i+1+EMB_NEEDLE_NUM,i+1); emit siChangeNeedleColor(i+EMB_NEEDLE_NUM,i+1); } } int sewNum = g_pSettings->readFromIniFile("SewNeedle/number").toInt(); for(int i = 0; i < sewNum; i++) { QString idxStr = "SewNeedle/"+QString::number(i+1)+"_coloridx"; if(g_pSettings->ifKeyExists(idxStr) == false) { g_pSettings->writeToIniFile("SewNeedle/"+QString::number(i+1)+"_coloridx",QString::number(i+1)); g_pCurEmbData->setNeedleColorTable(i+1+EMB_NEEDLE_NUM+PUNCH_NEEDLE_NUM,i+1); emit siChangeNeedleColor(i+EMB_NEEDLE_NUM+PUNCH_NEEDLE_NUM,i+1); } } //密码权限,单次有效 g_emUser = operate; this->hide(); } //绣花针杆颜色设置 void NeedleBarSetWidget::on_buttonEmbSet_clicked() { m_setType = SET_TYPE_NEEDLE_EMB; refreshNeedleColorShow(); ui->buttonEmbSet->setCheckable(true); ui->buttonEmbSet->setChecked(true); ui->buttonPunchSet->setChecked(false); ui->buttonPunchSet->setCheckable(false); ui->buttonSewSet->setChecked(false); ui->buttonSewSet->setCheckable(false); } void NeedleBarSetWidget::on_buttonPunchSet_clicked() { m_setType = SET_TYPE_NEEDLE_PUNCH; refreshNeedleColorShow(); ui->buttonPunchSet->setCheckable(true); ui->buttonPunchSet->setChecked(true); ui->buttonEmbSet->setChecked(false); ui->buttonEmbSet->setCheckable(false); ui->buttonSewSet->setChecked(false); ui->buttonSewSet->setCheckable(false); } void NeedleBarSetWidget::on_buttonSewSet_clicked() { m_setType = SET_TYPE_NEEDLE_SEW; refreshNeedleColorShow(); ui->buttonSewSet->setCheckable(true); ui->buttonSewSet->setChecked(true); ui->buttonEmbSet->setChecked(false); ui->buttonEmbSet->setCheckable(false); ui->buttonPunchSet->setChecked(false); ui->buttonPunchSet->setCheckable(false); }