版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
实现
输入半径,自动计算直径、周长、面积其他三项内容
实现代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
double R,D,C,S;
R=ui->lineEditR->text().toDouble();
D=2*R;
C=M_PI*D;
S=M_PI*R*R;
ui->lineEditD->setText(QString("%1").arg(D));
ui->lineEditC->setText(QString("%1").arg(C));
ui->lineEditS->setText(QString("%1").arg(S));
}
运行测试:
优化:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qmessagebox.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect( ui->lineEditD, SIGNAL(textChanged(QString)), SLOT(on_lineEditR_textChanged(QString)) );
connect( ui->lineEditC, SIGNAL(textChanged(QString)), SLOT(on_lineEditR_textChanged(QString)) );
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
if (ui->lineEditR->text() == "")
QMessageBox::information(NULL, "提示xxx","请输入半径的值yyyy");
double R = ui->lineEditR->text().toDouble();
double D = 2 * R;
double C = M_PI * D;
double S = M_PI * R * R;
ui->lineEditD->setText(QString::number(D));
ui->lineEditC->setText(QString::number(C));
ui->lineEditS->setText(QString::number(S));
}
void MainWindow::on_lineEditR_textChanged(const QString &arg1)
{
QLineEdit * CurEdit = (QLineEdit *)(sender());
if (CurEdit->objectName() == "lineEditR")
{
on_pushButton_clicked();
}
else if (CurEdit->objectName() == "lineEditD")
{
double D = ui->lineEditD->text().toDouble();
double R = D / 2;
double C = M_PI * D;
double S = M_PI * R * R;
ui->lineEditR->setText(QString::number(R));
ui->lineEditC->setText(QString::number(C));
ui->lineEditS->setText(QString::number(S));
}
else if (CurEdit->objectName() == "lineEditC")
{
double C = ui->lineEditC->text().toDouble();
double R = C / M_PI / 2;
double D = 2 * R;
double S = M_PI * R * R;
ui->lineEditR->setText(QString::number(R));
ui->lineEditD->setText(QString::number(D));
ui->lineEditS->setText(QString::number(S));
}
}
运行测试:(改变半径其余三个值自动改变)