linux qt小型计算器,Qt实现一个简单的计算器
Qt實現一個簡單的計算器
作者:hackett
微信公眾號:加班猿
一、UI界面版
運行效果:輸入num1和num2選擇+-*/點擊計算即可
UI界面設計:
3個lineEdit(lineEditNum1,lineEditNum2,lineEditSum)
2個PushButton(buttonClear,ButtonCalc)
1個comboBox
1個label
布局:
3個lineEdit和1個comboBox、1個label水平布局
2個PushButton和一個彈簧水平布局
最后整體布局即可
main.cpp#include?"mainwindow.h"
#include?
int?main(int?argc,?char?*argv[])
{
QApplication?a(argc,?argv);
MainWindow?w;
w.show();
return?a.exec();
}
mainwindow.cpp#include?"mainwindow.h"
#include?"ui_mainwindow.h"
#include?
#include?
MainWindow::MainWindow(QWidget?*parent)?:
QMainWindow(parent),
ui(new?Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete?ui;
}
void?MainWindow::on_buttonCalc_clicked()
{
double?num1?=?ui->lineEditNum1->text().toDouble();//獲取num1的值
double?num2?=?ui->lineEditNum2->text().toDouble();//獲取num2的值
uint8_t?index?=?ui->comboBox->currentIndex();???//獲取下拉框的下標0?+,?1?-?,2?*,?3?/
double?result?=?0.0;
switch?(index)?{
case?0:
result?=?num1?+?num2;
break;
case?1:
result?=?num1?-?num2;
break;
case?2:
result?=?num1?*?num2;
break;
case?3:
if(num2?==?0)
{
QMessageBox::about(this,"注意","除數不能為0");
return;
}
result?=?num1?/?num2;
break;
default:
break;
}
ui->lineEditSum->setText(QString::number(result));
}
void?MainWindow::on_buttonClear_clicked()
{
ui->lineEditNum1->clear();
ui->lineEditNum2->clear();
ui->lineEditSum->clear();
}
mainwindow.h#ifndef?MAINWINDOW_H
#define?MAINWINDOW_H
#include?
namespace?Ui?{
class?MainWindow;
}
class?MainWindow?:?public?QMainWindow
{
Q_OBJECT
public:
explicit?MainWindow(QWidget?*parent?=?0);
~MainWindow();
private?slots:
void?on_buttonCalc_clicked();//計算結果槽函數
void?on_buttonClear_clicked();//清除輸入框槽函數
private:
Ui::MainWindow?*ui;
};
#endif?//?MAINWINDOW_H
二、純代碼版
注:只能兩個數單獨加減乘除,不能連續運算,按‘ = ’重新開始兩個數運算
main.cpp#include?"calc.h"
#include?
int?main(int?argc,?char?*argv[])
{
QApplication?a(argc,?argv);
Calc?w;
w.show();
return?a.exec();
}
calc.cpp#include?"calc.h"
#include?
#include?
#include?
#include?
#include?
Calc::Calc(QWidget?*parent)?:
QWidget(parent)
{
//獲取字體QFont
QFont?font?=?this->font();
font.setPixelSize(30);
this->setFont(font);
//保存鍵盤值
QString?keys="789-456*123/0.+=";
QVBoxLayout?*vbox?=?new?QVBoxLayout();
QSizePolicy?qsPolicy(QSizePolicy::Expanding,?QSizePolicy::Expanding);
for(int?i=0;?i<4;?i++)
{
QHBoxLayout?*hbox?=?new?QHBoxLayout();
for(int?j=0;?j<4;?j++)
{
buttons[i*4+j]?=?new?QToolButton(this);
//設置文本
buttons[i*4+j]->setText(keys.mid(i*4+j,?1));
hbox->addWidget(buttons[i*4+j]);
//策略設置
buttons[i*4+j]->setSizePolicy(qsPolicy);
//把按鈕觸發信號關聯槽函數
connect(buttons[i*4+j],?SIGNAL(clicked(bool)),this,?SLOT(buttons_chick()));
}
//把水平布局管理器添加到垂直布局管理器中
vbox->addLayout(hbox);
}
//創建一個輸入框
edit?=?new?QLineEdit(this);
edit->setSizePolicy(qsPolicy);
edit->setMaximumHeight(60);
edit->setAlignment(Qt::AlignRight);
QVBoxLayout?*allVbox?=?new?QVBoxLayout(this);
allVbox->addWidget(edit);
allVbox->addLayout(vbox);
//初始化
firstNumber.clear();
secondNumber.clear();
calcflag?=?0;
}
Calc::~Calc()
{
}
void?Calc::input_data(QString?str)
{
if(calcflag?==?0)
{
firstNumber.append(str);
edit->setText(firstNumber);
}else
{
secondNumber.append(str);
edit->setText(secondNumber);
}
}
void?Calc::buttons_chick()
{
//通過信號發送者獲取按鈕對象
QToolButton?*button?=?(QToolButton*)sender();
//qDebug()
QString?str?=?button->text();
QString?datastr?=?".0123456789";
QStringList?typestr;
typestr<
if(datastr.indexOf(str)?>=?0)//獲取按鍵值
{
input_data(str);????//輸入數據
}else?if(typestr.indexOf(str)>=0)
{
calcflag?=?typestr.indexOf(str)+1;//獲取運算符號type
}else?//=
{
double?result?=?0.0;
switch?(calcflag)?{
case?1:
result?=?firstNumber.toDouble()+secondNumber.toDouble();
break;
case?2:
result?=?firstNumber.toDouble()-secondNumber.toDouble();
break;
case?3:
result?=?firstNumber.toDouble()*secondNumber.toDouble();
break;
case?4:
result?=?firstNumber.toDouble()/secondNumber.toDouble();
break;
default:
break;
}
edit->setText(QString::number(result));
calcflag?=?0;
firstNumber.clear();
secondNumber.clear();
}
}
calc.h#ifndef?CALC_H
#define?CALC_H
#include?
#include?
#include?
class?Calc?:?public?QWidget
{
Q_OBJECT
public:
explicit?Calc(QWidget?*parent?=?0);
~Calc();
void?input_data(QString?str);
protected?slots:
void?buttons_chick();//按鍵槽函數
private:
QToolButton?*buttons[16];???//按鈕數組
QLineEdit?*edit;????????????//輸入框
QString?firstNumber;????????//記錄輸入第一個數值
QString?secondNumber;???????//記錄輸入第一個數值
int?calcflag;???????????????//1-add,?2-sub,?3-mul,?4-div
};
#endif?//?CALC_H
如果你覺得文章還不錯,記得"點贊關注"
關注我的微信公眾號【 加班猿 】可以獲取更多內容
總結
以上是生活随笔為你收集整理的linux qt小型计算器,Qt实现一个简单的计算器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何扩大临linux零时空间,手把手教你
- 下一篇: 仿写夏天的树是动物们乘凉的沙发。