PunchHMI/sharedviews/sheetwidget.cpp

541 lines
14 KiB
C++
Raw Normal View History

2024-02-06 06:58:57 +00:00
#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<u16> 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();
}