Qt Designer上嵌入式计算器的代码
时间: 2024-03-24 10:18:23 浏览: 87
Qt计算器代码
以下是使用Qt Designer创建嵌入式计算器的示例代码:
1. 创建一个新的Qt Widgets Application项目。
2. 打开Qt Designer并创建一个新的窗口小部件。
3. 从小部件工具箱中拖动并放置一个QLineEdit(用于显示计算结果)和多个QPushButton(用于输入数字和操作符)。
4. 设置每个QPushButton的文本属性以显示相应的数字或操作符。
5. 设置QLineEdit的只读属性为true以防止用户直接编辑结果。
6. 在QPushButton的clicked()信号上连接一个槽函数,该槽函数将处理相应的数字或操作符,并在QLineEdit中显示结果。
下面是示例代码:
mainwindow.h:
```cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_digitButton_clicked();
void on_operatorButton_clicked();
void on_clearButton_clicked();
void on_equalButton_clicked();
private:
Ui::MainWindow *ui;
QString currentText;
double result;
QString pendingOperator;
bool clearOnNextInput;
};
#endif // MAINWINDOW_H
```
mainwindow.cpp:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
currentText = "";
result = 0.0;
pendingOperator = "";
clearOnNextInput = false;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_digitButton_clicked()
{
QPushButton *button = qobject_cast<QPushButton *>(sender());
if (button) {
if (clearOnNextInput) {
currentText = "";
clearOnNextInput = false;
}
currentText += button->text();
ui->lineEdit->setText(currentText);
}
}
void MainWindow::on_operatorButton_clicked()
{
QPushButton *button = qobject_cast<QPushButton *>(sender());
if (button) {
double currentValue = currentText.toDouble();
if (pendingOperator == "") {
result = currentValue;
} else {
if (pendingOperator == "+") {
result += currentValue;
} else if (pendingOperator == "-") {
result -= currentValue;
} else if (pendingOperator == "*") {
result *= currentValue;
} else if (pendingOperator == "/") {
if (currentValue != 0.0) {
result /= currentValue;
} else {
result = 0.0;
}
}
}
pendingOperator = button->text();
clearOnNextInput = true;
}
}
void MainWindow::on_clearButton_clicked()
{
currentText = "";
result = 0.0;
pendingOperator = "";
clearOnNextInput = false;
ui->lineEdit->setText("");
}
void MainWindow::on_equalButton_clicked()
{
double currentValue = currentText.toDouble();
if (pendingOperator == "+") {
result += currentValue;
} else if (pendingOperator == "-") {
result -= currentValue;
} else if (pendingOperator == "*") {
result *= currentValue;
} else if (pendingOperator == "/") {
if (currentValue != 0.0) {
result /= currentValue;
} else {
result = 0.0;
}
}
currentText = QString::number(result);
ui->lineEdit->setText(currentText);
pendingOperator = "";
clearOnNextInput = true;
}
```
在这个示例中,我们使用了一个QLineEdit来显示计算结果,并使用多个QPushButton来输入数字和操作符。我们还定义了一个表示当前输入文本的字符串currentText,一个表示当前计算结果的double值result,一个表示待处理操作符的字符串pendingOperator,以及一个标记是否在下一个输入之前清除输入的标志clearOnNextInput。
我们使用QPushButton的clicked()信号连接到on_digitButton_clicked()和on_operatorButton_clicked()槽函数上。在on_digitButton_clicked()槽函数中,我们将点击的QPushButton的文本附加到currentText字符串末尾,并在QLineEdit中显示当前文本。在on_operatorButton_clicked()槽函数中,我们根据点击的QPushButton的文本执行相应的操作,并将结果存储在result中。我们还将待处理操作符设置为当前操作符,并将clearOnNextInput标志设置为true,以便在下一个输入之前清除输入。
我们还连接了on_clearButton_clicked()和on_equalButton_clicked()槽函数到QPushButton的clicked()信号上。在on_clearButton_clicked()槽函数中,我们将所有变量重置为初始值,并将QLineEdit的文本设置为空。在on_equalButton_clicked()槽函数中,我们执行最终的计算,并将结果显示在QLineEdit中。
最后,我们需要将mainwindow.ui文件中的QPushButton的clicked()信号连接到相应的槽函数上。在Qt Designer中,可以通过在“信号/槽”编辑器中选择QPushButton并在“单击”下拉列表中选择clicked()信号来完成此操作。
阅读全文