#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()) ); } //根据不同分辨率设置控件的位置和尺寸 switch (g_emResolut) { case resolution1910: initResolution1910(); break; case resolution1006: initResolution1006(); break; default: this->resize(1920,1080); break; } initControlStyle();//初始化窗体控件样式 } //初始化窗体控件为1920x1080分辨率 void PassWordDialog::initResolution1910() { double factoryX = 1.875; //缩放比例系数 double factoryY = 1.8; this->resize(1024*factoryX,600*factoryY); this->move((1024*factoryX-this->width())/2,(600*factoryY-this->height())/2); ui->frameBack->setGeometry(0,0,1024*factoryX,600*factoryY);//416,505 int x = 326 ; //x偏移 int y = 240; //y便宜 ui->labelTitle->setGeometry((322)*factoryX, (97)*factoryY,328*factoryX,48*factoryY); ui->labelValue->setGeometry((370)*factoryX+76, (172)*factoryY,270*factoryX,44*factoryY); 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((x+(j+1)*124)*factoryX,(y+i*50)*factoryY,112*factoryX,40*factoryY); break; } else { m_NumerBtnlist[i*3+j]->setGeometry((x+j*124)*factoryX,(y+i*50)*factoryY,112*factoryX,40*factoryY); } } } ui->buttonClean->setGeometry((x)*factoryX, (390)*factoryY,112*factoryX,40*factoryY); ui->buttonBack->setGeometry((x+248)*factoryX,(390)*factoryY,112*factoryX,40*factoryY); ui->buttonOk->setGeometry((x+124)*factoryX, (440)*factoryY,112*factoryX,40*factoryY); ui->buttonCancel->setGeometry((x+248)*factoryX, (440)*factoryY,112*factoryX,40*factoryY); } //初始化窗体控件为1024x600分辨率 void PassWordDialog::initResolution1006() { int x = 326 ; //x偏移 int y = 240; //y便宜 this->resize(1024,600); this->move((1024-this->width())/2,(600-this->height())/2); ui->frameBack->setGeometry(0,0,1024,600); ui->labelTitle->setGeometry(322, 97,328,48); ui->labelValue->setGeometry(370, 172,270,44); 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(x+(j+1)*124,y+i*50,112,40); break; } else { m_NumerBtnlist[i*3+j]->setGeometry(x+j*124,y+i*50,112,40); } } } ui->buttonClean->setGeometry(x, 390,112,40); ui->buttonBack->setGeometry(x+248,390,112,40); ui->buttonOk->setGeometry(x+124,440,112,40); ui->buttonCancel->setGeometry(x+248,440,112,40); } //初始化窗体控件样式 void PassWordDialog::initControlStyle() { //白蓝色渐变、灰蓝色渐变 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));border-radius:5px;}"; 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));}"; SetControlStyle setControlStyle; setControlStyle.setUiName(this->objectName()); for(int i = 0; i < m_NumerBtnlist.size(); i++) { m_NumerBtnlist[i]->setStyleSheet(style); m_NumerBtnlist[i]->setFont(fontNormal_1); } ui->frameBack->setStyleSheet(setControlStyle.getStyleSheet(this->objectName())); ui->labelTitle->setStyleSheet(LABELWHITESTYLE); ui->labelTitle->setFont(fontNormal_1); ui->labelTitle->setAlignment(Qt::AlignLeft); ui->labelTitle->setAlignment(Qt::AlignVCenter); ui->labelValue->setStyleSheet(LABELWHITESTYLE); ui->labelValue->setFont(fontNormal_1); ui->labelValue->setAlignment(Qt::AlignCenter); ui->buttonClean->setStyleSheet(style); ui->buttonClean->setFont(fontNormal_1); ui->buttonBack->setStyleSheet(style); ui->buttonBack->setFont(fontNormal_1); ui->buttonOk->setWhiteBlueBottomStyle(); ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonOk->objectName()+"_1"),10); ui->buttonCancel->setWhiteBlueBottomStyle(); ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonCancel->objectName()+"_1"),12); } 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(g_emResolut == resolution1910) { if(m_inputStr.length() > 0) { ui->buttonOk->setEnabled(true); } else { ui->buttonOk->setEnabled(false); } } else { 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); }