#include "numkeyboard.h" #include "ui_numkeyboard.h" NumKeyboard::NumKeyboard(QWidget *parent) : QDialog(parent), ui(new Ui::NumKeyboard) { ui->setupUi(this); this->setWindowFlags(Qt::Dialog|Qt::FramelessWindowHint); //Set dialog type setCursor(QCursor(Qt::CrossCursor)); //Set cursor type } NumKeyboard::~NumKeyboard() { delete ui; } void NumKeyboard::setText(QString str) //Set text content { strContent = str; ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setFocus(); } QString NumKeyboard::getText() //Get text content,to connect slot { return strContent; } void NumKeyboard::on_pushButton_1_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); //Get cursor position if(strContent.left(idx) == "0") //Zero cannot be the first number,so one number cannot has two zero { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '1'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_2_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '2'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_3_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '3'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_4_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '4'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_5_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '5'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_6_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '6'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_7_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '7'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_8_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '8'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_9_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '9'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_0_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(idx) == "0" || (idx==0 &&strContent!="")) //If the first is zero { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '0'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_Dot_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(idx==0 || strContent.contains('.')) //Dot cannot be at first and has more than two dot in on number { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.insert(idx, '.'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_PM_clicked() //Add minus { int idx = ui->lineEdit_Dialog->cursorPosition(); if(strContent.left(1) == "-") { strContent.remove(0, 1); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx-1); ui->lineEdit_Dialog->setFocus(); } else { if(strContent=="0" || strContent=="") { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); } else { strContent.insert(0, '-'); ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx+1); ui->lineEdit_Dialog->setFocus(); } } } void NumKeyboard::on_pushButton_Delete_clicked() { int idx = ui->lineEdit_Dialog->cursorPosition(); if(idx == 0) { ui->lineEdit_Dialog->setCursorPosition(idx); ui->lineEdit_Dialog->setFocus(); return; } strContent.remove(idx-1,1); //Remove function for str.Useful!!! ui->lineEdit_Dialog->setText(strContent); ui->lineEdit_Dialog->setCursorPosition(idx-1); ui->lineEdit_Dialog->setFocus(); } void NumKeyboard::on_pushButton_Cancel_clicked() { this->close(); valid = false; //Judge if send str to mainwindow or not } void NumKeyboard::on_pushButton_OK_clicked() { this->close(); valid = true; }