#include "patternneedlelayoutwidget.h" #include "ui_patternneedlelayoutwidget.h" PatternNeedleLayoutWidget::PatternNeedleLayoutWidget(QWidget *parent) : QWidget(parent), ui(new Ui::PatternNeedleLayoutWidget) { ui->setupUi(this); setWindowFlags (Qt::Window | Qt::FramelessWindowHint); setWindowModality(Qt::ApplicationModal); m_NeedleBtnList.clear(); m_NeedleBtnList.append(ui->pushButtonFront1); m_NeedleBtnList.append(ui->pushButtonFront2); m_NeedleBtnList.append(ui->pushButtonFront3); m_NeedleBtnList.append(ui->pushButtonFront4); m_NeedleBtnList.append(ui->pushButtonFront5); m_NeedleBtnList.append(ui->pushButtonFront6); m_NeedleBtnList.append(ui->pushButtonFront7); m_NeedleBtnList.append(ui->pushButtonFront8); m_NeedleBtnList.append(ui->pushButtonFront9); m_NeedleBtnList.append(ui->pushButtonFront10); m_NeedleBtnList.append(ui->pushButtonFront11); m_NeedleBtnList.append(ui->pushButtonFront12); m_NeedleBtnList.append(ui->pushButtonFront13); m_NeedleBtnList.append(ui->pushButtonFront14); m_NeedleBtnList.append(ui->pushButtonFront15); m_NeedleBtnList.append(ui->pushButtonFront16); m_NeedleBtnList.append(ui->pushButtonFront17); m_NeedleBtnList.append(ui->pushButtonFront18); m_NeedleBtnList.append(ui->pushButtonFront19); m_NeedleBtnList.append(ui->pushButtonFront20); m_NeedleBtnList.append(ui->pushButtonFront21); m_NeedleBtnList.append(ui->pushButtonFront22); m_NeedleBtnList.append(ui->pushButtonFront23); m_NeedleBtnList.append(ui->pushButtonFront24); m_NeedleBtnList.append(ui->pushButtonMiddle1); m_NeedleBtnList.append(ui->pushButtonMiddle2); m_NeedleBtnList.append(ui->pushButtonMiddle3); m_NeedleBtnList.append(ui->pushButtonMiddle4); m_NeedleBtnList.append(ui->pushButtonMiddle5); m_NeedleBtnList.append(ui->pushButtonMiddle6); m_NeedleBtnList.append(ui->pushButtonMiddle7); m_NeedleBtnList.append(ui->pushButtonMiddle8); m_NeedleBtnList.append(ui->pushButtonMiddle9); m_NeedleBtnList.append(ui->pushButtonMiddle10); m_NeedleBtnList.append(ui->pushButtonMiddle11); m_NeedleBtnList.append(ui->pushButtonMiddle12); m_NeedleBtnList.append(ui->pushButtonMiddle13); m_NeedleBtnList.append(ui->pushButtonMiddle14); m_NeedleBtnList.append(ui->pushButtonMiddle15); m_NeedleBtnList.append(ui->pushButtonMiddle16); m_NeedleBtnList.append(ui->pushButtonMiddle17); m_NeedleBtnList.append(ui->pushButtonMiddle18); m_NeedleBtnList.append(ui->pushButtonMiddle19); m_NeedleBtnList.append(ui->pushButtonMiddle20); m_NeedleBtnList.append(ui->pushButtonMiddle21); m_NeedleBtnList.append(ui->pushButtonMiddle22); m_NeedleBtnList.append(ui->pushButtonMiddle23); m_NeedleBtnList.append(ui->pushButtonMiddle24); m_NeedleBtnList.append(ui->pushButtonBehind1); m_NeedleBtnList.append(ui->pushButtonBehind2); m_NeedleBtnList.append(ui->pushButtonBehind3); m_NeedleBtnList.append(ui->pushButtonBehind4); m_NeedleBtnList.append(ui->pushButtonBehind5); m_NeedleBtnList.append(ui->pushButtonBehind6); m_NeedleBtnList.append(ui->pushButtonBehind7); m_NeedleBtnList.append(ui->pushButtonBehind8); m_NeedleBtnList.append(ui->pushButtonBehind9); m_NeedleBtnList.append(ui->pushButtonBehind10); m_NeedleBtnList.append(ui->pushButtonBehind11); m_NeedleBtnList.append(ui->pushButtonBehind12); m_NeedleBtnList.append(ui->pushButtonBehind13); m_NeedleBtnList.append(ui->pushButtonBehind14); m_NeedleBtnList.append(ui->pushButtonBehind15); m_NeedleBtnList.append(ui->pushButtonBehind16); m_NeedleBtnList.append(ui->pushButtonBehind17); m_NeedleBtnList.append(ui->pushButtonBehind18); m_NeedleBtnList.append(ui->pushButtonBehind19); m_NeedleBtnList.append(ui->pushButtonBehind20); m_NeedleBtnList.append(ui->pushButtonBehind21); m_NeedleBtnList.append(ui->pushButtonBehind22); m_NeedleBtnList.append(ui->pushButtonBehind23); m_NeedleBtnList.append(ui->pushButtonBehind24); for(int i = 0; i < m_NeedleBtnList.size(); i++) { connect(m_NeedleBtnList[i], SIGNAL(clicked()), this, SLOT(slotNeedleBtnClicked())); } m_pCurEmbData = new EmbData(); m_leftRightNeedleSpace = 635;//左右针间距 m_needlesSpace = 2540;//针与针之间间距 m_needleLayoutSpace12 = 7620;//针排间距 m_needleLayoutSpace23 = 7620;//针排间距 m_btnSelect = -1; memset(m_arrayNeedle1,NEEDLENOTSET,sizeof(m_arrayNeedle1)); memset(m_arrayNeedle2,NEEDLENOTSET,sizeof(m_arrayNeedle2)); memset(m_arrayNeedle3,NEEDLENOTSET,sizeof(m_arrayNeedle3)); this->setStyleSheet("background-color: rgb(223, 223, 223);"); initResolution(); initControlStyle(); } PatternNeedleLayoutWidget::~PatternNeedleLayoutWidget() { if(m_pCurEmbData != NULL) { delete m_pCurEmbData; } delete ui; } //返回一个按钮-高和宽最小的一个数值 int PatternNeedleLayoutWidget::returnMinimumSize(QPushButton *button) { // 确保指针不是 nullptr,以避免在按钮未正确初始化时导致的问题 if (button == NULL) { return 0; // 或者抛出异常或处理这种情况 } // 使用三元运算符来返回宽度和高度中的较大值 return button->width() < button->height() ? button->width() : button->height(); } // 设置银色按钮,黑字 void PatternNeedleLayoutWidget::setButtonStyle(QPushButton *button) { // 银色按钮,黑字 QString style = "QPushButton{background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgb(255, 255, 255), stop:1 rgb(215, 243, 254));color: rgb(0, 0, 0);}"; style += "QPushButton:pressed{background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgb(217, 222, 224), stop:1 rgb(191, 213, 223));}"; style += "QPushButton:disabled{background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgb(230, 230, 230), stop:1 rgb(182, 182, 182));}"; button->setStyleSheet(style); } //设置按钮颜色橙色--清空文本设置icon void PatternNeedleLayoutWidget::setOrangeButtonStyleSettingsIcon(QPushButton *button) { QString iconName = ":/images/PatternNeedleLayoutWidget/"+button->objectName()+".png"; button->setIcon(QIcon(iconName)); button->setIconSize(QSize(returnMinimumSize(button), returnMinimumSize(button))); button->setText(""); QString style = "QPushButton{border-radius:" + borderRadius() + "px;}"; // 橙色按钮,白字 style += "QPushButton{background-color: qlineargradient(spread:pad, x1:0.5 y1:0, x2:0.5, y2:1, stop:0 rgb(247, 180, 61), stop:1 rgb(222, 162, 55));color:rgb(255,255,255);}"; style += "QPushButton:pressed{background-color: qlineargradient(spread:pad, x1:0.5 y1:0, x2:0.5, y2:1, stop:0 rgb(222, 196, 128), stop:1 rgb(213,125,54));color:rgb(255,255,255);}"; style += "QPushButton:disabled{background-color: qlineargradient(spread:pad, x1:0.5 y1:0, x2:0.5, y2:1, stop:0 rgb(227, 227, 227), stop:1 rgb(177,177,177));color:rgb(255,255,255);}"; button->setStyleSheet(style); } //设置按钮颜色--天蓝色渐变 void PatternNeedleLayoutWidget::setButtonColorForSkyBlue(QPushButton *button) { QString style = "QPushButton{border-radius:" + borderRadius() + "px;}"; style += "QPushButton{background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,stop: 0 #7DE0E1, stop: 1 #39C2DC);border: none;}"; style += "QPushButton:pressed{background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,stop: 0 #6DC3C4, stop: 1 #32AAC0);border: none;}"; style += "QPushButton:disabled{background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,stop: 0 #E8E8E8, stop: 1 #B3B3B3);border: none;color:rgb(0,0,0);}"; style += "QPushButton:checked{background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,stop: 0 #E8E8E8, stop: 1 #B3B3B3);border: none;color:rgb(0,0,0);}"; button->setStyleSheet(style); } //设置按钮颜色--银色边框白底黑字 void PatternNeedleLayoutWidget::setButtonStyleForSilverBorder(QPushButton *button) { QString style = "QPushButton {" "background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgb(255, 255, 255), stop:1 rgb(215, 243, 254));" "color: rgb(0, 0, 0);" "border: 2px solid rgb(200, 200, 200);" "border-radius: 5px;" "} " "QPushButton:pressed {" "background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgb(217, 222, 224), stop:1 rgb(191, 213, 223));" "border: 2px solid rgb(235, 235, 235);" "} " "QPushButton:disabled {" "background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgb(230, 230, 230), stop:1 rgb(182, 182, 182));" "color: rgb(150, 150, 150);" "border: 2px solid rgb(180, 180, 180);" "}"; button->setStyleSheet(style); } void PatternNeedleLayoutWidget::selectNextBtn() { int index = 0; for(int i = 0; i < m_NeedleBtnList.size(); i++) { QPushButton* p_btn = m_NeedleBtnList.at(i); if(p_btn->isChecked()) { index = i; break; } } index++; if(index < m_NeedleBtnList.size()) { QPushButton* p_btn = m_NeedleBtnList.at(index); p_btn->click(); } } //初始化窗体控件为任意分辨率 void PatternNeedleLayoutWidget::initResolution() { double factoryX = getFactoryX(); double factoryY = getFactoryY(); this->resize(GLB_SCR_WIGHT*factoryX,GLB_SCR_HEIGHT*factoryY); ui->frameBGImg->setGeometry(0*factoryX,0*factoryY,GLB_SCR_WIGHT*factoryX,GLB_SCR_HEIGHT*factoryY); ui->frameBack->setGeometry(0*factoryX,0*factoryY,GLB_SCR_WIGHT*factoryX,GLB_SCR_HEIGHT*factoryY); ui->buttonTypeLogo->setGeometry(GLB_EDGE_WIGHT*factoryX,GLB_EDGE_HEIGHT*factoryY,GLB_LICON_SIZE*factoryX,GLB_LICON_SIZE*factoryY); ui->labelMainTitle->setGeometry((GLB_EDGE_WIGHT+GLB_LICON_SIZE+GLB_EDGE_WIGHT)*factoryX,GLB_EDGE_HEIGHT*factoryY, (GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_LICON_SIZE+GLB_EDGE_WIGHT*2))*factoryX,GLB_TEXT_L_HEIGHT*factoryY); ui->labelSubTitle->setGeometry((GLB_EDGE_WIGHT+GLB_LICON_SIZE+GLB_EDGE_WIGHT+GLB_TAB_WIGHT)*factoryX,(GLB_EDGE_HEIGHT+GLB_LICON_SIZE-GLB_TEXT_HEIGHT)*factoryY, (GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_LICON_SIZE+GLB_EDGE_WIGHT+GLB_TAB_WIGHT*2))*factoryX,GLB_TEXT_HEIGHT*factoryY); ui->framePageBtn->setGeometry(0*factoryX,(GLB_SCR_HEIGHT-GLB_LBUT_HEIGHT-GLB_EDGE_WIGHT)*factoryY,GLB_SCR_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY); ui->buttonClear->setGeometry((GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_BAS_WIGHT*3+GLB_LBUT_WIGHT*4))*factoryX,0*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY); ui->buttonCircle->setGeometry((GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_BAS_WIGHT*2+GLB_LBUT_WIGHT*3))*factoryX,0*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY); ui->buttonOk->setGeometry((GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_BAS_WIGHT*1+GLB_LBUT_WIGHT*2))*factoryX,0*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY); ui->buttonCancel->setGeometry((GLB_SCR_WIGHT-(GLB_EDGE_WIGHT+GLB_BAS_WIGHT*0+GLB_LBUT_WIGHT*1))*factoryX,0*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY); ui->labelImage->setGeometry(80*factoryX,320*factoryY,451*factoryX,251*factoryY); ui->labelExplain->setGeometry(527*factoryX,470*factoryY,440*factoryX,50*factoryY); ui->pushButtonDouble->setGeometry(881*factoryX,435*factoryY,80*factoryX,30*factoryY); ui->pushButtonLeft->setGeometry(645*factoryX,435*factoryY,80*factoryX,30*factoryY); ui->pushButtonNone->setGeometry(527*factoryX,435*factoryY,80*factoryX,30*factoryY); ui->pushButtonRight->setGeometry(763*factoryX,435*factoryY,80*factoryX,30*factoryY); ui->pushButtonLRSpace->setGeometry(876*factoryX,310*factoryY,50*factoryX,20*factoryY); ui->pushButtonNSpace->setGeometry(876*factoryX,340*factoryY,50*factoryX,20*factoryY); ui->pushButton12Space->setGeometry(876*factoryX,370*factoryY,50*factoryX,20*factoryY); ui->pushButton23Space->setGeometry(876*factoryX,400*factoryY,50*factoryX,20*factoryY); ui->labelLRSpace->setGeometry(527*factoryX,310*factoryY,321*factoryX,20*factoryY); ui->labelNSpace->setGeometry(527*factoryX,340*factoryY,321*factoryX,20*factoryY); ui->label12Space->setGeometry(527*factoryX,370*factoryY,321*factoryX,20*factoryY); ui->label23Space->setGeometry(527*factoryX,400*factoryY,321*factoryX,20*factoryY); ui->labelUnit1->setGeometry(932*factoryX,310*factoryY,41*factoryX,20*factoryY); ui->labelUnit2->setGeometry(932*factoryX,340*factoryY,41*factoryX,20*factoryY); ui->labelUnit3->setGeometry(932*factoryX,370*factoryY,41*factoryX,20*factoryY); ui->labelUnit4->setGeometry(932*factoryX,400*factoryY,41*factoryX,20*factoryY); ui->frameBehind->setGeometry(10*factoryX,230*factoryY,991*factoryX,60*factoryY); ui->frameMiddle->setGeometry(10*factoryX,160*factoryY,991*factoryX,60*factoryY); ui->frameFront->setGeometry(10*factoryX,90*factoryY,991*factoryX,60*factoryY); for(int i = 0; i setGeometry((20+(40*(i%24)))*factoryX,14*factoryY,32*factoryX,32*factoryY); } } //初始化窗体控件的样式 void PatternNeedleLayoutWidget::initControlStyle() { ui->buttonTypeLogo->setUnPreBtnLogo(":/images/PatternNeedleLayoutWidget/mybutton_logo.png"); ui->labelMainTitle->setText(tr("Alignment preview")); ui->labelSubTitle->setText(tr("Pattern setting") + ">" + tr(" Alignment preview")); ui->frameBGImg->setStyleSheet("QFrame {" "border-image: url(:/images/PatternEditWidget/WidgetFrameBack_1006_logo.png) 0 0 0 0 stretch stretch;" "}"); ui->frameBack->setStyleSheet("background: transparent;"); ui->labelImage->setStyleSheet("background: transparent;"); ui->frameBehind->setStyleSheet("background: transparent;"); ui->frameFront->setStyleSheet("background: transparent;"); ui->frameMiddle->setStyleSheet("background: transparent;"); ui->framePageBtn->setStyleSheet("background: transparent;"); //label样式 ui->labelMainTitle->setFont(fontSize_L()); ui->labelMainTitle->setStyleSheet(titleTextColour()); ui->labelSubTitle->setFont(fontSize_M()); ui->labelSubTitle->setStyleSheet(noteTextColour()); for(int i=0;isetFont(fontSize_M()); } setOrangeButtonStyleSettingsIcon(ui->buttonOk); setOrangeButtonStyleSettingsIcon(ui->buttonClear); setOrangeButtonStyleSettingsIcon(ui->buttonCircle); setOrangeButtonStyleSettingsIcon(ui->buttonCancel); ui->labelLRSpace->setText(tr("Left and right needle spacing :"));//左右针间距 ui->labelNSpace->setText(tr("Needle to needle spacing :"));//针与针间距 ui->label12Space->setText(tr("First, second row needle spacing :"));//第一、二排针间距 ui->label23Space->setText(tr("Second, thrid row needle spacing :"));//第二、三排针间距 ui->labelLRSpace->setFont(fontSize_M()); ui->labelNSpace->setFont(fontSize_M()); ui->label12Space->setFont(fontSize_M()); ui->label23Space->setFont(fontSize_M()); ui->label12Space->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->label23Space->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->labelLRSpace->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->labelNSpace->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->labelUnit1->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->labelUnit2->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->labelUnit3->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->labelUnit4->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->labelExplain->setStyleSheet("background: transparent;color:rgb(255, 255, 255)"); ui->label12Space->setFont(fontSize_M()); ui->label23Space->setFont(fontSize_M()); ui->labelLRSpace->setFont(fontSize_M()); ui->labelNSpace->setFont(fontSize_M()); ui->labelUnit1->setFont(fontSize_M()); ui->labelUnit2->setFont(fontSize_M()); ui->labelUnit3->setFont(fontSize_M()); ui->labelUnit4->setFont(fontSize_M()); ui->labelExplain->setFont(fontSize_M()); ui->pushButtonNone->setFont(fontSize_M()); ui->pushButtonRight->setFont(fontSize_M()); ui->pushButtonLeft->setFont(fontSize_M()); ui->pushButtonDouble->setFont(fontSize_M()); ui->pushButton12Space->setFont(fontSize_M()); ui->pushButton23Space->setFont(fontSize_M()); ui->pushButtonLRSpace->setFont(fontSize_M()); ui->pushButtonNSpace->setFont(fontSize_M()); setButtonStyleForSilverBorder(ui->pushButton12Space); setButtonStyleForSilverBorder(ui->pushButton23Space); setButtonStyleForSilverBorder(ui->pushButtonLRSpace); setButtonStyleForSilverBorder(ui->pushButtonNSpace); setButtonColorForSkyBlue(ui->pushButtonNone); setButtonColorForSkyBlue(ui->pushButtonRight); setButtonColorForSkyBlue(ui->pushButtonLeft); setButtonColorForSkyBlue(ui->pushButtonDouble); ui->pushButtonNone->setDisabled(true); ui->pushButtonLeft->setDisabled(true); ui->pushButtonRight->setDisabled(true); ui->pushButtonDouble->setDisabled(true); ui->pushButtonDouble->setVisible(false); } void PatternNeedleLayoutWidget::on_pushButtonNone_clicked() { if(m_btnSelect < 0) { return; } if(m_btnSelect < LAYOUTNEEDLENUM && m_btnSelect >= 0) { m_arrayNeedle1[m_btnSelect] = NEEDLENONE; refreshView(1); //更新前排数据 } else if(m_btnSelect < LAYOUTNEEDLENUM*2 && m_btnSelect >= LAYOUTNEEDLENUM) { m_arrayNeedle2[m_btnSelect-LAYOUTNEEDLENUM] = NEEDLENONE; refreshView(2); //更新中排数据 } else if(m_btnSelect < LAYOUTNEEDLENUM*3 && m_btnSelect >= LAYOUTNEEDLENUM*2) { m_arrayNeedle3[m_btnSelect-LAYOUTNEEDLENUM*2] = NEEDLENONE; refreshView(3); //更新后排数据 } m_NeedleBtnList[m_btnSelect]->setText("O"); selectNextBtn(); } void PatternNeedleLayoutWidget::on_pushButtonLeft_clicked() { if(m_btnSelect < 0) { return; } if(m_btnSelect < LAYOUTNEEDLENUM && m_btnSelect >= 0) { m_arrayNeedle1[m_btnSelect] = NEEDLELEFT; refreshView(1); } else if(m_btnSelect < LAYOUTNEEDLENUM*2 && m_btnSelect >= LAYOUTNEEDLENUM) { m_arrayNeedle2[m_btnSelect-LAYOUTNEEDLENUM] = NEEDLELEFT; refreshView(2); } else if(m_btnSelect < LAYOUTNEEDLENUM*3 && m_btnSelect >= LAYOUTNEEDLENUM*2) { m_arrayNeedle3[m_btnSelect-LAYOUTNEEDLENUM*2] = NEEDLELEFT; refreshView(3); } m_NeedleBtnList[m_btnSelect]->setText("L"); selectNextBtn(); } void PatternNeedleLayoutWidget::on_pushButtonRight_clicked() { if(m_btnSelect < 0) { return; } if(m_btnSelect < LAYOUTNEEDLENUM && m_btnSelect >= 0) { m_arrayNeedle1[m_btnSelect] = NEEDLERIGHT; refreshView(1); } else if(m_btnSelect < LAYOUTNEEDLENUM*2 && m_btnSelect >= LAYOUTNEEDLENUM) { m_arrayNeedle2[m_btnSelect-LAYOUTNEEDLENUM] = NEEDLERIGHT; refreshView(2); } else if(m_btnSelect < LAYOUTNEEDLENUM*3 && m_btnSelect >= LAYOUTNEEDLENUM*2) { m_arrayNeedle3[m_btnSelect-LAYOUTNEEDLENUM*2] = NEEDLERIGHT; refreshView(3); } m_NeedleBtnList[m_btnSelect]->setText("R"); selectNextBtn(); } void PatternNeedleLayoutWidget::on_buttonCircle_clicked() { unsigned char arrayNeedle1[LAYOUTNEEDLENUM]; // 第1排排针 memcpy((char*)arrayNeedle1,(char*)m_arrayNeedle1,sizeof(m_arrayNeedle1)); unsigned char arrayNeedle2[LAYOUTNEEDLENUM]; // 第2排排针 memcpy((char*)arrayNeedle2,(char*)m_arrayNeedle2,sizeof(m_arrayNeedle2)); unsigned char arrayNeedle3[LAYOUTNEEDLENUM]; // 第3排排针 memcpy((char*)arrayNeedle3,(char*)m_arrayNeedle3,sizeof(m_arrayNeedle3)); //前排循环 s16 needle1Num = 0; for(u16 i = 0; i < sizeof(m_arrayNeedle1); i++) { if(m_arrayNeedle1[i] == NEEDLENOTSET) { break; } needle1Num++; } if(needle1Num > 0) { u16 idx = 0; unsigned char cpArrayNeedle1[needle1Num]; memcpy((char*)cpArrayNeedle1,(char*)m_arrayNeedle1,sizeof(cpArrayNeedle1)); for(u16 i = 0; i < sizeof(m_arrayNeedle1); i++) { if(i >= needle1Num) { idx = i % needle1Num; } else { idx = i; } m_arrayNeedle1[i] = cpArrayNeedle1[idx]; } } //中排循环 s16 needle2Num = 0; for(u16 i = 0; i < sizeof(m_arrayNeedle2); i++) { if(m_arrayNeedle2[i] == NEEDLENOTSET) { break; } needle2Num++; } if(needle2Num > 0) { u16 idx = 0; unsigned char cpArrayNeedle2[needle2Num]; memcpy((char*)cpArrayNeedle2,(char*)m_arrayNeedle2,sizeof(cpArrayNeedle2)); for(u16 i = 0; i < sizeof(m_arrayNeedle2); i++) { if(i >= needle2Num) { idx = i % needle2Num; } else { idx = i; } m_arrayNeedle2[i] = cpArrayNeedle2[idx]; } } //后排循环 s16 needle3Num = 0; for(u16 i = 0; i < sizeof(m_arrayNeedle3); i++) { if(m_arrayNeedle3[i] == NEEDLENOTSET) { break; } needle3Num++; } if(needle3Num > 0) { u16 idx = 0; unsigned char cpArrayNeedle3[needle3Num]; memcpy((char*)cpArrayNeedle3,(char*)m_arrayNeedle3,sizeof(cpArrayNeedle3)); for(u16 i = 0; i < sizeof(m_arrayNeedle3); i++) { if(i >= needle3Num) { idx = i % needle3Num; } else { idx = i; } m_arrayNeedle3[i] = cpArrayNeedle3[idx]; } } refreshNeedleText(); //重置绘制数据 bool bl1 = memcmp((char*)m_arrayNeedle1,(char*)arrayNeedle1,sizeof(arrayNeedle1)); bool bl2 = memcmp((char*)m_arrayNeedle2,(char*)arrayNeedle2,sizeof(arrayNeedle2)); bool bl3 = memcmp((char*)m_arrayNeedle3,(char*)arrayNeedle3,sizeof(arrayNeedle3)); m_pCurEmbData->setViewInfo(ui->labelImage->width(),ui->labelImage->height()); if(bl1 == true)//设置改变 { m_pCurEmbData->resetLayoutDispDat(m_arrayNeedle1,m_arrayNeedle2,m_arrayNeedle3,m_newLRSpaceValue,m_newNSpaceValue,m_new12SpaceValue,m_new23SpaceValue,1); } if(bl2 == true)//设置改变 { m_pCurEmbData->resetLayoutDispDat(m_arrayNeedle1,m_arrayNeedle2,m_arrayNeedle3,m_newLRSpaceValue,m_newNSpaceValue,m_new12SpaceValue,m_new23SpaceValue,2); } if(bl3 == true)//设置改变 { m_pCurEmbData->resetLayoutDispDat(m_arrayNeedle1,m_arrayNeedle2,m_arrayNeedle3,m_newLRSpaceValue,m_newNSpaceValue,m_new12SpaceValue,m_new23SpaceValue,3); } m_pCurEmbData->createDispFromEmbDs16DatForFlyShuttle(1); m_pCurEmbData->setDispMode(EmbData::DISP_ALL_NORMAL,1); // 重新画灰图 QPixmap patternPix = m_pCurEmbData->getPreviewImage(); ui->labelImage->setPixmap(patternPix); } void PatternNeedleLayoutWidget::on_buttonOk_clicked() { if(m_filePath.length() <= 0) { return; } QFileInfo file(m_filePath); QString ext = file.suffix().toUpper(); //将排针信息保存到文件中 if(ext == "QUI") { DataFileQui qui; qui.initFile(m_filePath); //将花样参数配置写回到源文件中,需放在转换中间数据之前,因为中间数据需要根据文件头参数进行数据变换 QuiFileHead *head = qui.getQuiHead(); if(head == NULL){return;} m_leftRightNeedleSpace = m_newLRSpaceValue; head->leftRightLen = m_newLRSpaceValue;//左右针间距 m_needlesSpace = m_newNSpaceValue; head->HStep = m_needlesSpace;//针与针之间间距 m_needleLayoutSpace12 = m_new12SpaceValue; head->VStep12 = m_needleLayoutSpace12;//针排间距 m_needleLayoutSpace23 = m_new23SpaceValue; head->VStep23 = m_needleLayoutSpace23;//针排间距 memcpy((char*)head->arrayNeedle1,(char*)m_arrayNeedle1,sizeof(m_arrayNeedle1)); memcpy((char*)head->arrayNeedle2,(char*)m_arrayNeedle2,sizeof(m_arrayNeedle2)); memcpy((char*)head->arrayNeedle3,(char*)m_arrayNeedle3,sizeof(m_arrayNeedle3)); ui->pushButtonLRSpace->setText(QString::number(m_leftRightNeedleSpace/100)); ui->pushButtonNSpace->setText(QString::number(m_needlesSpace/100)); ui->pushButton12Space->setText(QString::number(m_needleLayoutSpace12/100)); ui->pushButton23Space->setText(QString::number(m_needleLayoutSpace23/100)); qui.writePatternParaToFile(head); } else if(ext == "QUIX") { DataFileQuix quix; quix.initFile(m_filePath); //将花样参数配置写回到源文件中,需放在转换中间数据之前,因为中间数据需要根据文件头参数进行数据变换 QuixFileHead *head = quix.getQuixHead(); if(head == NULL){return;} m_leftRightNeedleSpace = m_newLRSpaceValue; head->leftRightLen = m_leftRightNeedleSpace;//左右针间距 m_needlesSpace = m_newNSpaceValue; head->HStep = m_needlesSpace;//针与针之间间距 m_needleLayoutSpace12 = m_new12SpaceValue; head->VStep12 = m_needleLayoutSpace12;//针排间距 m_needleLayoutSpace23 = m_new23SpaceValue; head->VStep23 = m_needleLayoutSpace23;//针排间距 memcpy((char*)head->arrayNeedle1,(char*)m_arrayNeedle1,sizeof(m_arrayNeedle1)); memcpy((char*)head->arrayNeedle2,(char*)m_arrayNeedle2,sizeof(m_arrayNeedle2)); memcpy((char*)head->arrayNeedle3,(char*)m_arrayNeedle3,sizeof(m_arrayNeedle3)); ui->pushButtonLRSpace->setText(QString::number(m_leftRightNeedleSpace/100)); ui->pushButtonNSpace->setText(QString::number(m_needlesSpace/100)); ui->pushButton12Space->setText(QString::number(m_needleLayoutSpace12/100)); ui->pushButton23Space->setText(QString::number(m_needleLayoutSpace23/100)); quix.writePatternParaToFile(head); } else if(ext == "DSR") { DataFileDsr dsr; dsr.initFile(m_filePath); //将花样参数配置写回到源文件中,需放在转换中间数据之前,因为中间数据需要根据文件头参数进行数据变换 DsrHead *head = dsr.getDsrHead(); if(head == NULL){return;} m_leftRightNeedleSpace = m_newLRSpaceValue; head->leftRightLen = m_leftRightNeedleSpace;//左右针间距 m_needlesSpace = m_newNSpaceValue; head->HStep = m_needlesSpace;//针与针之间间距 m_needleLayoutSpace12 = m_new12SpaceValue; head->VStep12 = m_needleLayoutSpace12;//针排间距 m_needleLayoutSpace23 = m_new23SpaceValue; head->VStep23 = m_needleLayoutSpace23;//针排间距 memcpy((char*)head->arrayNeedle1,(char*)m_arrayNeedle1,sizeof(m_arrayNeedle1)); memcpy((char*)head->arrayNeedle2,(char*)m_arrayNeedle2,sizeof(m_arrayNeedle2)); memcpy((char*)head->arrayNeedle3,(char*)m_arrayNeedle3,sizeof(m_arrayNeedle3)); ui->pushButtonLRSpace->setText(QString::number(m_leftRightNeedleSpace/100)); ui->pushButtonNSpace->setText(QString::number(m_needlesSpace/100)); ui->pushButton12Space->setText(QString::number(m_needleLayoutSpace12/100)); ui->pushButton23Space->setText(QString::number(m_needleLayoutSpace23/100)); dsr.writePatternParaToFile(head); } emit siPatternNeedlePreview(); } void PatternNeedleLayoutWidget::on_buttonCancel_clicked() { this->hide(); } void PatternNeedleLayoutWidget::slotNeedleBtnClicked() { QPushButton *button = (QPushButton*) this->sender(); if(button == NULL) { return; } if(button->isCheckable() == true) { button->setChecked(false); button->setCheckable(false); m_btnSelect = -1; ui->pushButtonNone->setDisabled(true); ui->pushButtonLeft->setDisabled(true); ui->pushButtonRight->setDisabled(true); ui->pushButtonDouble->setDisabled(true); } else { //其他按钮Checked变为false for(int i = 0; i < m_NeedleBtnList.size(); i++) { m_NeedleBtnList[i]->setChecked(false); m_NeedleBtnList[i]->setCheckable(false); if(button == m_NeedleBtnList[i]) { button->setCheckable(true); button->setChecked(true); m_btnSelect = i; if(!ui->pushButtonNone->isEnabled()) { ui->pushButtonNone->setDisabled(false); ui->pushButtonLeft->setDisabled(false); ui->pushButtonRight->setDisabled(false); ui->pushButtonDouble->setDisabled(false); } } } } } void PatternNeedleLayoutWidget::refreshNeedleText() { //刷新按钮显示 for(u16 i = 0; i < sizeof(m_arrayNeedle1); i++) { if(m_arrayNeedle1[i] == NEEDLENOTSET) { m_NeedleBtnList[i]->setText("X"); } else if(m_arrayNeedle1[i] == NEEDLENONE) { m_NeedleBtnList[i]->setText("O"); } else if(m_arrayNeedle1[i] == NEEDLELEFT) { m_NeedleBtnList[i]->setText("L"); } else if(m_arrayNeedle1[i] == NEEDLERIGHT) { m_NeedleBtnList[i]->setText("R"); } else { m_NeedleBtnList[i]->setText("X"); } } for(u16 i = 0; i < sizeof(m_arrayNeedle2); i++) { if(m_arrayNeedle2[i] == NEEDLENOTSET) { m_NeedleBtnList[i+LAYOUTNEEDLENUM]->setText("X"); } else if(m_arrayNeedle2[i] == NEEDLENONE) { m_NeedleBtnList[i+LAYOUTNEEDLENUM]->setText("O"); } else if(m_arrayNeedle2[i] == NEEDLELEFT) { m_NeedleBtnList[i+LAYOUTNEEDLENUM]->setText("L"); } else if(m_arrayNeedle2[i] == NEEDLERIGHT) { m_NeedleBtnList[i+LAYOUTNEEDLENUM]->setText("R"); } else { m_NeedleBtnList[i+LAYOUTNEEDLENUM]->setText("X"); } } for(u16 i = 0; i < sizeof(m_arrayNeedle3); i++) { if(m_arrayNeedle3[i] == NEEDLENOTSET) { m_NeedleBtnList[i+LAYOUTNEEDLENUM*2]->setText("X"); } else if(m_arrayNeedle3[i] == NEEDLENONE) { m_NeedleBtnList[i+LAYOUTNEEDLENUM*2]->setText("O"); } else if(m_arrayNeedle3[i] == NEEDLELEFT) { m_NeedleBtnList[i+LAYOUTNEEDLENUM*2]->setText("L"); } else if(m_arrayNeedle3[i] == NEEDLERIGHT) { m_NeedleBtnList[i+LAYOUTNEEDLENUM*2]->setText("R"); } else { m_NeedleBtnList[i+LAYOUTNEEDLENUM*2]->setText("X"); } } } void PatternNeedleLayoutWidget::refreshView(s16 idx) { if(idx == 0) { QByteArray ary = m_pCurEmbData->getDsDat(); if(ary.size() > 0) { m_pCurEmbData->getOneDispDat(ary); } } m_pCurEmbData->setViewInfo(ui->labelImage->width(),ui->labelImage->height()); m_pCurEmbData->resetLayoutDispDat(m_arrayNeedle1,m_arrayNeedle2,m_arrayNeedle3,m_newLRSpaceValue,m_newNSpaceValue,m_new12SpaceValue,m_new23SpaceValue,idx); m_pCurEmbData->createDispFromEmbDs16DatForFlyShuttle(); m_pCurEmbData->setDispMode(EmbData::DISP_ALL_NORMAL,1); // 重新画灰图 QPixmap patternPix = m_pCurEmbData->getPreviewImage(); ui->labelImage->setPixmap(patternPix); } void PatternNeedleLayoutWidget::refreshSpace() { ui->pushButtonLRSpace->setText("6.35"); ui->pushButtonNSpace->setText("25.4"); ui->pushButton12Space->setText("76.2"); ui->pushButton23Space->setText("76.2"); m_leftRightNeedleSpace = 635; m_needlesSpace = 2540; m_needleLayoutSpace12 = 7620; m_needleLayoutSpace23 = 7620; m_newLRSpaceValue = 635; m_newNSpaceValue = 2540; m_new12SpaceValue = 7620; m_new23SpaceValue = 7620; refreshView(0); } void PatternNeedleLayoutWidget::showView(QString filePath,QByteArray absAry) { ui->buttonOk->setDisabled(false); m_filePath = filePath; if(m_filePath.length() <= 0) { return; } m_leftRightNeedleSpace = 635;//左右针间距 m_needlesSpace = 2540;//针与针之间间距 m_needleLayoutSpace12 = 7620;//针排间距 m_needleLayoutSpace23 = 7620;//针排间距 memset(m_arrayNeedle1,NEEDLENOTSET,sizeof(m_arrayNeedle1)); memset(m_arrayNeedle2,NEEDLENOTSET,sizeof(m_arrayNeedle2)); memset(m_arrayNeedle3,NEEDLENOTSET,sizeof(m_arrayNeedle3)); QFileInfo file(m_filePath); QString ext = file.suffix().toUpper(); //读取排针信息 if(ext == "QUI") { DataFileQui qui; qui.initFile(m_filePath); //将花样参数配置写回到源文件中,需放在转换中间数据之前,因为中间数据需要根据文件头参数进行数据变换 QuiFileHead *head = qui.getQuiHead(); if(head == NULL){return;} m_leftRightNeedleSpace = head->leftRightLen;//左右针间距 m_needlesSpace = head->HStep;//针与针之间间距 m_needleLayoutSpace12 = head->VStep12;//针排间距 m_needleLayoutSpace23 = head->VStep23;//针排间距 memcpy((char*)m_arrayNeedle1,(char*)head->arrayNeedle1,sizeof(m_arrayNeedle1)); memcpy((char*)m_arrayNeedle2,(char*)head->arrayNeedle2,sizeof(m_arrayNeedle2)); memcpy((char*)m_arrayNeedle3,(char*)head->arrayNeedle3,sizeof(m_arrayNeedle3)); ui->pushButtonLRSpace->setText(QString::number(m_leftRightNeedleSpace/100)); ui->pushButtonNSpace->setText(QString::number(m_needlesSpace/100)); ui->pushButton12Space->setText(QString::number(m_needleLayoutSpace12/100)); ui->pushButton23Space->setText(QString::number(m_needleLayoutSpace23/100)); m_new12SpaceValue = m_needleLayoutSpace12; m_new23SpaceValue = m_needleLayoutSpace23; m_newLRSpaceValue = m_leftRightNeedleSpace; m_newNSpaceValue = m_needlesSpace; } else if(ext == "QUIX") { DataFileQuix quix; quix.initFile(m_filePath); //将花样参数配置写回到源文件中,需放在转换中间数据之前,因为中间数据需要根据文件头参数进行数据变换 QuixFileHead *head = quix.getQuixHead(); if(head == NULL){return;} m_leftRightNeedleSpace = head->leftRightLen;//左右针间距 m_needlesSpace = head->HStep;//针与针之间间距 m_needleLayoutSpace12 = head->VStep12;//针排间距 m_needleLayoutSpace23 = head->VStep23;//针排间距 memcpy((char*)m_arrayNeedle1,(char*)head->arrayNeedle1,sizeof(m_arrayNeedle1)); memcpy((char*)m_arrayNeedle2,(char*)head->arrayNeedle2,sizeof(m_arrayNeedle2)); memcpy((char*)m_arrayNeedle3,(char*)head->arrayNeedle3,sizeof(m_arrayNeedle3)); ui->pushButtonLRSpace->setText(QString::number(m_leftRightNeedleSpace/100)); ui->pushButtonNSpace->setText(QString::number(m_needlesSpace/100)); ui->pushButton12Space->setText(QString::number(m_needleLayoutSpace12/100)); ui->pushButton23Space->setText(QString::number(m_needleLayoutSpace23/100)); m_new12SpaceValue = m_needleLayoutSpace12; m_new23SpaceValue = m_needleLayoutSpace23; m_newLRSpaceValue = m_leftRightNeedleSpace; m_newNSpaceValue = m_needlesSpace; } else if(ext == "DSR") { DataFileDsr dsr; dsr.initFile(m_filePath); //将花样参数配置写回到源文件中,需放在转换中间数据之前,因为中间数据需要根据文件头参数进行数据变换 DsrHead *head = dsr.getDsrHead(); if(head == NULL){return;} m_leftRightNeedleSpace = head->leftRightLen;//左右针间距 m_needlesSpace = head->HStep;//针与针之间间距 m_needleLayoutSpace12 = head->VStep12;//针排间距 m_needleLayoutSpace23 = head->VStep23;//针排间距 memcpy((char*)m_arrayNeedle1,(char*)head->arrayNeedle1,sizeof(m_arrayNeedle1)); memcpy((char*)m_arrayNeedle2,(char*)head->arrayNeedle2,sizeof(m_arrayNeedle2)); memcpy((char*)m_arrayNeedle3,(char*)head->arrayNeedle3,sizeof(m_arrayNeedle3)); ui->pushButtonLRSpace->setText(QString::number(m_leftRightNeedleSpace/100)); ui->pushButtonNSpace->setText(QString::number(m_needlesSpace/100)); ui->pushButton12Space->setText(QString::number(m_needleLayoutSpace12/100)); ui->pushButton23Space->setText(QString::number(m_needleLayoutSpace23/100)); m_new12SpaceValue = m_needleLayoutSpace12; m_new23SpaceValue = m_needleLayoutSpace23; m_newLRSpaceValue = m_leftRightNeedleSpace; m_newNSpaceValue = m_needlesSpace; } refreshNeedleText(); m_pCurEmbData->setViewInfo(ui->labelImage->width(),ui->labelImage->height()); m_pCurEmbData->clear(); m_pCurEmbData->setAbsDat(absAry); m_pCurEmbData->m_editedflag = 1; QByteArray ary = m_pCurEmbData->getDsDat(); if(ary.size() > 0) { m_pCurEmbData->getOneDispDat(ary); m_pCurEmbData->resetLayoutDispDat(m_arrayNeedle1,m_arrayNeedle2,m_arrayNeedle3,m_newLRSpaceValue,m_newNSpaceValue,m_new12SpaceValue,m_new23SpaceValue,0); m_pCurEmbData->createDispFromEmbDs16DatForFlyShuttle(); m_pCurEmbData->setDispMode(EmbData::DISP_ALL_NORMAL,1); // 重新画灰图 QPixmap patternPix = m_pCurEmbData->getPreviewImage(); ui->labelImage->setPixmap(patternPix); } QWidget::show(); } void PatternNeedleLayoutWidget::showTempView(QByteArray &dat) { ui->buttonOk->setDisabled(true); // memset(m_arrayNeedle1,NEEDLENOTSET,sizeof(m_arrayNeedle1)); // memset(m_arrayNeedle2,NEEDLENOTSET,sizeof(m_arrayNeedle2)); // memset(m_arrayNeedle3,NEEDLENOTSET,sizeof(m_arrayNeedle3)); refreshNeedleText(); m_pCurEmbData->setViewInfo(ui->labelImage->width(),ui->labelImage->height()); m_pCurEmbData->clear(); m_pCurEmbData->setAbsDat(dat); m_pCurEmbData->m_editedflag = 1; QByteArray ary = m_pCurEmbData->getDsDat(); if(ary.size() > 0) { m_pCurEmbData->getOneDispDat(ary); m_pCurEmbData->resetLayoutDispDat(m_arrayNeedle1,m_arrayNeedle2,m_arrayNeedle3,m_leftRightNeedleSpace,m_needlesSpace,m_needleLayoutSpace12,m_needleLayoutSpace23,0); m_pCurEmbData->createDispFromEmbDs16DatForFlyShuttle(); m_pCurEmbData->setDispMode(EmbData::DISP_ALL_NORMAL,1); // 重新画灰图 QPixmap patternPix = m_pCurEmbData->getPreviewImage(); ui->labelImage->setPixmap(patternPix); } QWidget::show(); } void PatternNeedleLayoutWidget::on_buttonClear_clicked() { memset(m_arrayNeedle1,NEEDLENOTSET,sizeof(m_arrayNeedle1)); memset(m_arrayNeedle2,NEEDLENOTSET,sizeof(m_arrayNeedle2)); memset(m_arrayNeedle3,NEEDLENOTSET,sizeof(m_arrayNeedle3)); refreshNeedleText(); refreshView(0); } void PatternNeedleLayoutWidget::on_pushButtonLRSpace_clicked() { int rslt=0; m_newLRSpaceValue= ui->pushButtonLRSpace->text().toDouble()*100; NumerInputDialog ndlg(this); ndlg.setTitleStr(ui->labelLRSpace->text()); ndlg.setUnitStr("mm"); ndlg.setValueAndRange(m_newLRSpaceValue, 0, 999999999, 2); rslt = ndlg.exec(); if (rslt == 1)//点了确认按钮 { s32 val = ndlg.getValue(); if (val != m_newLRSpaceValue)//更改后的值不等于之前存的值 { m_newLRSpaceValue = val; } } ui->pushButtonLRSpace->setText(QString::number(m_newLRSpaceValue/100)); refreshView(0); } void PatternNeedleLayoutWidget::on_pushButtonNSpace_clicked() { int rslt=0; m_newNSpaceValue=ui->pushButtonNSpace->text().toDouble()*100; NumerInputDialog ndlg(this); ndlg.setTitleStr(ui->labelNSpace->text()); ndlg.setUnitStr("mm"); ndlg.setValueAndRange(m_newNSpaceValue, 0, 999999999, 2); rslt = ndlg.exec(); if (rslt == 1)//点了确认按钮 { s32 val = ndlg.getValue(); if (val != m_newNSpaceValue)//更改后的值不等于之前存的值 { m_newNSpaceValue = val; } } ui->pushButtonNSpace->setText(QString::number(m_newNSpaceValue/100)); refreshView(0); } void PatternNeedleLayoutWidget::on_pushButton12Space_clicked() { int rslt=0; m_new12SpaceValue=ui->pushButton12Space->text().toDouble()*100; NumerInputDialog ndlg(this); ndlg.setTitleStr(ui->label12Space->text()); ndlg.setUnitStr("mm"); ndlg.setValueAndRange(m_new12SpaceValue, 0, 999999999, 2); rslt = ndlg.exec(); if (rslt == 1)//点了确认按钮 { s32 val = ndlg.getValue(); if (val != m_new12SpaceValue)//更改后的值不等于之前存的值 { m_new12SpaceValue = val; } } ui->pushButton12Space->setText(QString::number(m_new12SpaceValue/100)); refreshView(0); } void PatternNeedleLayoutWidget::on_pushButton23Space_clicked() { int rslt=0; m_new23SpaceValue=ui->pushButton23Space->text().toDouble()*100; NumerInputDialog ndlg(this); ndlg.setTitleStr(ui->label23Space->text()); ndlg.setUnitStr("mm"); ndlg.setValueAndRange(m_new23SpaceValue, 0, 999999999, 2); rslt = ndlg.exec(); if (rslt == 1)//点了确认按钮 { s32 val = ndlg.getValue(); if (val != m_new23SpaceValue)//更改后的值不等于之前存的值 { m_new23SpaceValue = val; } } ui->pushButton23Space->setText(QString::number(m_new23SpaceValue/100)); refreshView(0); }