如何用qt设置一个运用c++来设计的计算器程序
时间: 2024-05-15 12:13:33 浏览: 17
以下是一个简单的计算器程序的示例,使用C++和Qt进行编写:
首先,创建一个新的Qt项目,并在主窗口中添加一个QLineEdit对象,用于输入表达式,并添加一些QPushButton对象,用于表示数字和操作符。
接下来,我们可以使用Qt的信号和槽机制来连接这些按钮,以便在按下按钮时执行相应的操作。例如,当按下数字按钮时,我们可以将数字添加到QLineEdit对象中,当按下操作符按钮时,我们可以将该操作符添加到QLineEdit对象中。
一旦用户输入了完整的表达式并按下“=”按钮,我们可以使用C++中的数学库来计算结果,并将其显示在QLineEdit对象中。
以下是示例代码的简要概述:
```c++
// 头文件
#include <QtWidgets>
class Calculator : public QWidget
{
Q_OBJECT
public:
Calculator(QWidget *parent = 0);
~Calculator();
private slots:
void digitClicked();
void operatorClicked();
void equalClicked();
void clearClicked();
private:
QLineEdit *display;
QString currentOperator;
double result;
};
// 实现文件
Calculator::Calculator(QWidget *parent)
: QWidget(parent), currentOperator(""), result(0.0)
{
display = new QLineEdit("0");
display->setReadOnly(true);
QGridLayout *layout = new QGridLayout;
layout->addWidget(display, 0, 0, 1, 4);
QPushButton *clearButton = new QPushButton("C");
layout->addWidget(clearButton, 1, 0);
connect(clearButton, SIGNAL(clicked()), this, SLOT(clearClicked()));
// 添加数字按钮
for (int i = 0; i < 10; ++i) {
QPushButton *button = new QPushButton(QString::number(i));
layout->addWidget(button, i / 3 + 2, i % 3);
connect(button, SIGNAL(clicked()), this, SLOT(digitClicked()));
}
// 添加操作符按钮
QPushButton *plusButton = new QPushButton("+");
layout->addWidget(plusButton, 2, 3);
connect(plusButton, SIGNAL(clicked()), this, SLOT(operatorClicked()));
// ...
// 添加等于号按钮
QPushButton *equalButton = new QPushButton("=");
layout->addWidget(equalButton, 5, 2);
connect(equalButton, SIGNAL(clicked()), this, SLOT(equalClicked()));
setLayout(layout);
}
Calculator::~Calculator()
{
}
void Calculator::digitClicked()
{
QPushButton *button = qobject_cast<QPushButton *>(sender());
Q_ASSERT(button != 0);
QString digit = button->text();
QString text = display->text();
if (text == "0" && digit != ".") {
text = "";
}
display->setText(text + digit);
}
void Calculator::operatorClicked()
{
QPushButton *button = qobject_cast<QPushButton *>(sender());
Q_ASSERT(button != 0);
QString op = button->text();
QString text = display->text();
if (currentOperator.isEmpty()) {
result = text.toDouble();
} else {
double operand = text.toDouble();
if (currentOperator == "+") {
result += operand;
} else if (currentOperator == "-") {
result -= operand;
} else if (currentOperator == "*") {
result *= operand;
} else if (currentOperator == "/") {
result /= operand;
}
}
currentOperator = op;
display->setText("");
}
void Calculator::equalClicked()
{
QString text = display->text();
double operand = text.toDouble();
if (currentOperator == "+") {
result += operand;
} else if (currentOperator == "-") {
result -= operand;
} else if (currentOperator == "*") {
result *= operand;
} else if (currentOperator == "/") {
result /= operand;
}
display->setText(QString::number(result));
currentOperator = "";
result = 0.0;
}
void Calculator::clearClicked()
{
display->setText("0");
currentOperator = "";
result = 0.0;
}
// 主函数
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Calculator calculator;
calculator.show();
return a.exec();
}
```
以上是一个简单的计算器程序的示例,使用C++和Qt进行编写。你可以根据自己的需求进行修改和扩展。