First Commit
This commit is contained in:
commit
3796ec5cd2
146 files changed
+4825
No files matched your search
@@ -0,0 +1,83 @@
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
#include "conversion.h"
|
||||
#include <QClipboard>
|
||||
#include <QApplication>
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent), ui(new Ui::MainWindow)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->categoryCombo->addItems({tr("温度"), tr("长度")});
|
||||
connect(ui->categoryCombo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||
this, &MainWindow::changeCategory);
|
||||
connect(ui->convertButton, &QPushButton::clicked, this, &MainWindow::convertValue);
|
||||
connect(ui->inputEdit, &QLineEdit::returnPressed, this, &MainWindow::convertValue);
|
||||
connect(ui->inputEdit, &QLineEdit::textChanged, this, &MainWindow::clearResult);
|
||||
connect(ui->fromCombo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||
this, &MainWindow::clearResult);
|
||||
connect(ui->toCombo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||
this, &MainWindow::clearResult);
|
||||
connect(ui->swapButton, &QPushButton::clicked, this, [this] {
|
||||
const int previousFrom = ui->fromCombo->currentIndex();
|
||||
ui->fromCombo->setCurrentIndex(ui->toCombo->currentIndex());
|
||||
ui->toCombo->setCurrentIndex(previousFrom);
|
||||
ui->inputEdit->setFocus();
|
||||
});
|
||||
connect(ui->clearButton, &QPushButton::clicked, this, [this] {
|
||||
ui->inputEdit->clear();
|
||||
clearResult();
|
||||
ui->inputEdit->setFocus();
|
||||
});
|
||||
connect(ui->copyButton, &QPushButton::clicked, this, [this] {
|
||||
QApplication::clipboard()->setText(ui->resultEdit->text());
|
||||
ui->statusLabel->setText(tr("结果已复制。"));
|
||||
});
|
||||
changeCategory();
|
||||
ui->inputEdit->setText(QStringLiteral("25"));
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() { delete ui; }
|
||||
|
||||
void MainWindow::changeCategory()
|
||||
{
|
||||
const auto category = ui->categoryCombo->currentIndex() == 0
|
||||
? Conversion::Category::Temperature : Conversion::Category::Length;
|
||||
const QStringList names = Conversion::units(category);
|
||||
ui->fromCombo->clear();
|
||||
ui->toCombo->clear();
|
||||
ui->fromCombo->addItems(names);
|
||||
ui->toCombo->addItems(names);
|
||||
ui->fromCombo->setCurrentIndex(category == Conversion::Category::Length ? 2 : 0);
|
||||
ui->toCombo->setCurrentIndex(1);
|
||||
clearResult();
|
||||
}
|
||||
|
||||
void MainWindow::clearResult()
|
||||
{
|
||||
ui->resultEdit->clear();
|
||||
ui->formulaLabel->setText(tr("选择单位并输入数值,点击“换算”查看计算过程。"));
|
||||
ui->statusLabel->clear();
|
||||
ui->copyButton->setEnabled(false);
|
||||
}
|
||||
|
||||
void MainWindow::convertValue()
|
||||
{
|
||||
const auto category = ui->categoryCombo->currentIndex() == 0
|
||||
? Conversion::Category::Temperature : Conversion::Category::Length;
|
||||
const auto result = Conversion::convert(ui->inputEdit->text(), category,
|
||||
ui->fromCombo->currentIndex(),
|
||||
ui->toCombo->currentIndex());
|
||||
if (!result.ok) {
|
||||
clearResult();
|
||||
ui->statusLabel->setText(result.error);
|
||||
ui->inputEdit->setFocus();
|
||||
return;
|
||||
}
|
||||
ui->resultEdit->setText(QStringLiteral("%1 %2")
|
||||
.arg(result.value, 0, 'g', 12).arg(ui->toCombo->currentText()));
|
||||
ui->formulaLabel->setText(result.explanation);
|
||||
ui->statusLabel->setText(tr("换算完成。结果最多显示 12 位有效数字。"));
|
||||
ui->copyButton->setEnabled(true);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user