#include "Inputter.h" #include "ui_Inputter.h" Inputter::Inputter(QWidget *parent) : QWidget(parent), ui(new Ui::Inputter) { ui->setupUi(this); //load qss QFile file(":/qss/Inputter.qss"); file.open(QFile::ReadOnly); QTextStream filetext(&file); QString stylesheet = filetext.readAll(); this->setStyleSheet(stylesheet); file.close(); curentStr = ""; currentValue = 0; inputType = 0; DecimalPlaces = -1; ui->lineEdit->setText(curentStr); ui->lineEdit->setReadOnly(true); } Inputter::~Inputter() { delete ui; } bool Inputter::event(QEvent *event) { if(event->type() == QEvent::Leave) { this->close(); } return QWidget::event(event); } void Inputter::setInputType(int Type) { inputType = Type; } void Inputter::setInitValue(QVariant value) { curentStr = value.toString(); ui->lineEdit->setText(curentStr); } void Inputter::setDecimalPlaces(int value) { DecimalPlaces = value; } void Inputter::on_NumberClicked(QString str) { curentStr.append(str); ui->lineEdit->setText(curentStr); } void Inputter::on_pushButton_1_clicked() { on_NumberClicked(ui->pushButton_1->text()); } void Inputter::on_pushButton_2_clicked() { on_NumberClicked(ui->pushButton_2->text()); } void Inputter::on_pushButton_3_clicked() { on_NumberClicked(ui->pushButton_3->text()); } void Inputter::on_pushButton_4_clicked() { on_NumberClicked(ui->pushButton_4->text()); } void Inputter::on_pushButton_5_clicked() { on_NumberClicked(ui->pushButton_5->text()); } void Inputter::on_pushButton_6_clicked() { on_NumberClicked(ui->pushButton_6->text()); } void Inputter::on_pushButton_7_clicked() { on_NumberClicked(ui->pushButton_7->text()); } void Inputter::on_pushButton_8_clicked() { on_NumberClicked(ui->pushButton_8->text()); } void Inputter::on_pushButton_9_clicked() { on_NumberClicked(ui->pushButton_9->text()); } void Inputter::on_pushButton_point_clicked() { if(inputType == 0) { if(curentStr.size()>0) { if(curentStr.contains('.')) { qDebug() << "it is illegal string"; } else { if(DecimalPlaces != 0) { on_NumberClicked(ui->pushButton_point->text()); } } } else { qDebug() << "point can't be set in first char"; } } else { on_NumberClicked(ui->pushButton_point->text()); } } void Inputter::on_pushButton_0_clicked() { on_NumberClicked(ui->pushButton_0->text()); } void Inputter::on_pushButton_del_clicked() { curentStr = curentStr.mid(0,curentStr.size() - 1); ui->lineEdit->setText(curentStr); } void Inputter::on_pushButton_cancel_clicked() { this->close(); } void Inputter::on_pushButton_ok_clicked() { if(inputType == 0) { while(curentStr.at(0) == '0') { if(curentStr.contains('.')) { if(curentStr.at(1) == '.') { break; } else { curentStr = curentStr.mid(1); } } else { if(curentStr.size() > 1) { curentStr = curentStr.mid(1); } else { break; } } } if(curentStr.at(curentStr.size()-1) == '.') { curentStr.append('0'); } //判断位数 curentStr = QString::number(curentStr.toDouble(),'f',DecimalPlaces); } else { //mac模式 } currentValue = curentStr; qDebug() << currentValue; emit confirmValue(currentValue); this->deleteLater(); this->close(); } void Inputter::on_pushButton_nan_clicked() { curentStr = "nan"; ui->lineEdit->setText(curentStr); }