Quilting-lw/sharedviews/passworddialog.cpp

284 lines
8.8 KiB
C++
Raw Permalink Normal View History

2026-01-23 08:37:18 +00:00
#include "passworddialog.h"
#include "ui_passworddialog.h"
PassWordDialog::PassWordDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::PassWordDialog)
{
ui->setupUi(this);
setWindowFlags (Qt::Window | Qt::FramelessWindowHint);
setWindowModality(Qt::ApplicationModal);
setAttribute(Qt::WA_TranslucentBackground, true);//设置窗体背景透明
initControl();
m_inputStr.clear();
m_ifShow = false;
m_cleanFlag = 0;
m_ipLength = 0;
refreshUi();
}
PassWordDialog::~PassWordDialog()
{
delete ui;
}
//初始化窗体控件,包括位置、尺寸、样式
void PassWordDialog::initControl()
{
m_NumerBtnlist.clear();
m_NumerBtnlist.append(ui->buttonNum7);
m_NumerBtnlist.append(ui->buttonNum8);
m_NumerBtnlist.append(ui->buttonNum9);
m_NumerBtnlist.append(ui->buttonNum4);
m_NumerBtnlist.append(ui->buttonNum5);
m_NumerBtnlist.append(ui->buttonNum6);
m_NumerBtnlist.append(ui->buttonNum1);
m_NumerBtnlist.append(ui->buttonNum2);
m_NumerBtnlist.append(ui->buttonNum3);
m_NumerBtnlist.append(ui->buttonNum0);
for(int var = 0; var < m_NumerBtnlist.size(); var++)
{
connect(m_NumerBtnlist.at(var),
SIGNAL(clicked()),
this,
SLOT(numerBtnClick())
);
}
//根据不同分辨率设置控件的位置和尺寸
initResolution();
initControlStyle();//初始化窗体控件样式
}
//初始化窗体控件为任意分辨率
void PassWordDialog::initResolution()
{
#define FRAME_LEFT (328) // 小窗口
#define FRAME_TOP (80)
#define FRAME_WIGHT (367)
#define FRAME_HEIGHT (406)
#define TITLE_HEIGHT (48) // 标题栏高度
#define NUM_LEFT (23) // 数值左
#define NUM_TOP (85) // 数值上
#define NUM_WIGHT (323) // 数值宽度
#define NUM_HEIGHT (42) // 数值高度
#define NUM_CONT_X (FRAME_LEFT+NUM_LEFT) // 中心点x
#define NUM_CONT_Y (FRAME_TOP+NUM_TOP+NUM_HEIGHT) // 中心点y
double factoryX = getFactoryX();
double factoryY = getFactoryY();
this->resize(GLB_SCR_WIGHT*factoryX,GLB_SCR_HEIGHT*factoryY);
this->move((GLB_SCR_WIGHT*factoryX-this->width())/2+g_mainWidgetPos.x(),(GLB_SCR_HEIGHT*factoryY-this->height())/2+g_mainWidgetPos.y());
ui->frameBack->setGeometry(0*factoryX,0*factoryY,GLB_SCR_WIGHT*factoryX,GLB_SCR_HEIGHT*factoryY);
ui->labelTitle->setGeometry((FRAME_LEFT+GLB_EDGE_WIGHT)*factoryX,(FRAME_TOP+(TITLE_HEIGHT-GLB_TEXT_HEIGHT)/2-8)*factoryY,(FRAME_WIGHT-GLB_TAB_WIGHT*2)*factoryX,GLB_TEXT_L_HEIGHT*factoryY);
ui->labelValue->setGeometry((FRAME_LEFT+NUM_LEFT+GLB_TAB_WIGHT)*factoryX,(FRAME_TOP+NUM_TOP)*factoryY,(NUM_WIGHT-GLB_TAB_WIGHT*2)*factoryX,GLB_TEXT_L_HEIGHT*factoryY);
// ui->labelTitle->setGeometry((FRAME_LEFT+GLB_EDGE_WIGHT)*factoryX,(FRAME_TOP+(TITLE_HEIGHT-GLB_TEXT_HEIGHT)/2+10)*factoryY,(FRAME_WIGHT-GLB_TAB_WIGHT*2)*factoryX,GLB_TEXT_HEIGHT*factoryY);
// ui->labelValue->setGeometry((FRAME_LEFT+NUM_LEFT+GLB_TAB_WIGHT+20)*factoryX,(FRAME_TOP+NUM_TOP+11)*factoryY,(NUM_WIGHT-GLB_TAB_WIGHT*2)*factoryX,GLB_TEXT_L_HEIGHT*factoryY);
int bgX,bgY;
bgX = NUM_CONT_X;
bgY = NUM_CONT_Y + GLB_EDGE_WIGHT;
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 3; j ++)
{
if(i*3+j == m_NumerBtnlist.size()-1)
{
m_NumerBtnlist[i*3+j]->setGeometry((bgX+(j+1)*(GLB_LBUT_WIGHT+GLB_BAS_WIGHT))*factoryX,(bgY+i*(GLB_TEXT_L_HEIGHT+GLB_TAB_WIGHT))*factoryY,
GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
break;
}
else
{
m_NumerBtnlist[i*3+j]->setGeometry((bgX+j*(GLB_LBUT_WIGHT+GLB_BAS_WIGHT))*factoryX,(bgY+i*(GLB_TEXT_L_HEIGHT+GLB_TAB_WIGHT))*factoryY,
GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
}
}
}
ui->buttonClean->setGeometry((bgX)*factoryX, (bgY+3*(GLB_TEXT_L_HEIGHT+GLB_TAB_WIGHT))*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
ui->buttonBack->setGeometry((bgX+2*(GLB_LBUT_WIGHT+GLB_BAS_WIGHT))*factoryX,(bgY+3*(GLB_TEXT_L_HEIGHT+GLB_TAB_WIGHT))*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
ui->buttonOk->setGeometry((bgX+1*(GLB_LBUT_WIGHT+GLB_BAS_WIGHT))*factoryX,(bgY+4*(GLB_TEXT_L_HEIGHT+GLB_TAB_WIGHT)+GLB_BAS_WIGHT)*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
ui->buttonCancel->setGeometry((bgX+2*(GLB_LBUT_WIGHT+GLB_BAS_WIGHT))*factoryX,(bgY+4*(GLB_TEXT_L_HEIGHT+GLB_TAB_WIGHT)+GLB_BAS_WIGHT)*factoryY,GLB_LBUT_WIGHT*factoryX,GLB_LBUT_HEIGHT*factoryY);
}
//初始化窗体控件样式
void PassWordDialog::initControlStyle()
{
SetStyle setControlStyle;
setControlStyle.setUiName(this->objectName());
for(int i = 0; i < m_NumerBtnlist.size(); i++)
{
m_NumerBtnlist[i]->setStyleSheet(numButtonStyle());
m_NumerBtnlist[i]->setFont(fontSize_M());
}
if(g_emTheme == theme2)
{
ui->frameBack->setStyleSheet(frameBackStyle());
ui->labelTitle->setStyleSheet(titleTextColour2());
}else
{
ui->frameBack->setStyleSheet(setControlStyle.getStyleSheet(this->objectName()));
ui->labelTitle->setStyleSheet(transparentStyle());
}
ui->labelTitle->setFont(fontSize_L());
ui->labelTitle->setAlignment(Qt::AlignLeft);
ui->labelTitle->setAlignment(Qt::AlignVCenter);
ui->labelValue->setStyleSheet(numValue());
ui->labelValue->setFont(fontSize_L());
ui->labelValue->setAlignment(Qt::AlignCenter);
ui->buttonClean->setStyleSheet(numButtonStyle());
ui->buttonClean->setFont(fontSize_M());
ui->buttonBack->setStyleSheet(numButtonStyle());
ui->buttonBack->setFont(fontSize_M());
ui->buttonOk->setStyleSheet(confirmIconStyle());
ui->buttonCancel->setStyleSheet(confirmIconStyle());
if(g_emTheme == theme2)
{
ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet("buttonOk_1"));
ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet("buttonCancel_1"));
}else
{
ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet("buttonOk"));
ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet("buttonCancel"));
}
}
void PassWordDialog::refreshUi()
{
QTextCodec *cod = QTextCodec::codecForLocale();
QString showStr("");
QString password = cod->toUnicode("");
for (int var = 0; var < m_inputStr.size(); var++)
{
showStr = showStr + password;
}
if(m_ifShow == false)//不可见
{
ui->labelValue->setText(showStr);
}
else//可见
{
ui->labelValue->setText(m_inputStr);
}
if(m_inputStr.length() > 0)
{
ui->buttonOk->setEnabled(true);
}
else
{
ui->buttonOk->setEnabled(false);
}
}
void PassWordDialog::numerBtnClick()
{
QPushButton *button = (QPushButton*) this->sender() ;
if(button == NULL)
{
return;
}
QString str = button->text();
m_inputStr.append(str);
refreshUi();
}
void PassWordDialog::setTitleStr(QString str,int cFlag)
{
ui->labelTitle->setText(str);
m_inputStr.clear();
if(cFlag != 0)
{
m_cleanFlag = cFlag;
ui->buttonClean->setText(".");
}
refreshUi();
}
void PassWordDialog::setShowIfVisible(bool bShow)
{
m_ifShow = bShow;
}
void PassWordDialog::setIpStr(QString ip)
{
m_inputStr= ip;
m_ipLength = ip.length();
refreshUi();
}
QString PassWordDialog::getInputStr()
{
return m_inputStr;
}
void PassWordDialog::on_buttonClean_clicked()
{
if(m_cleanFlag != 0)
{
QString str = ui->buttonClean->text();
m_inputStr.append(str);
}
else
{
m_inputStr.clear();
}
refreshUi();
}
void PassWordDialog::on_buttonBack_clicked()
{
if(m_inputStr.length() <= m_ipLength)
{
return;
}
m_inputStr = m_inputStr.mid(0 , m_inputStr.size() - 1);
refreshUi();
}
void PassWordDialog::on_buttonOk_clicked()
{
if(m_inputStr.indexOf(".") != -1)
{
//检测IP地址是否合法
QRegExp regExp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)");
if (!regExp.exactMatch(m_inputStr))
{
PromptDialog promptDlg(this);
promptDlg.initDialog(PromptDialog::BTN_OK);
promptDlg.setTitleStr(tr("Prompt"));
QString str = tr("IP settings are unreasonable!");//IP设置不合理!
promptDlg.setContentStr(str);
promptDlg.exec();
return;
}
}
done(1);
}
void PassWordDialog::on_buttonCancel_clicked()
{
m_inputStr.clear();
done(0);
}