本文实例为大家分享了Qt实现计算器功能的具体代码,供大家参考,具体内容如下
该计算器主要通过lineEdit获取和显示数字,通过tableview显示计算过程。
通过tableview显示计算的过程,QLineEdit获取输入的数字,QComboBox实现不同的计算类型。
效果:

代码:
main.cpp
#pragma execution_character_set("utf-8")
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.setWindowTitle("计算器");
w.show();
return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStandardItemModel>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
int setCount();
private slots:
void on_btn_cal_clicked();
private:
Ui::MainWindow *ui;
QStandardItemModel *model;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#pragma execution_character_set("utf-8")
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMessageBox>
#include <QStandardItem>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//初始化model
model=new QStandardItemModel();
//设置列标题
model->setHorizontalHeaderItem(0,new QStandardItem("数字A"));
model->setHorizontalHeaderItem(1,new QStandardItem("符号"));
model->setHorizontalHeaderItem(2,new QStandardItem("数字B"));
model->setHorizontalHeaderItem(3,new QStandardItem("结果"));
//将模型与视图绑定
ui->tableView->setModel(model);
//设置表格单元不能编辑
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
//设置列表宽度
for(int i=0;i<4;++i)
{
ui->tableView->setColumnWidth(i,50);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
int MainWindow::setCount()
{
int ret=0;
//获取lineEdit上的内容
QString num1=ui->num1->text();
if(num1.isEmpty())
{
return -1;
}
QString num2=ui->num2->text();
if(num2.isEmpty())
{
return -1;
}
QString symbol=ui->comboBox->currentText();
if(symbol == "+")
{
ret=num1.toInt()+num2.toInt();
}
else if(symbol == "-")
{
ret=num1.toInt()-num2.toInt();
}
else if(symbol == "*")
{
ret=num1.toInt()*num2.toInt();
}
else if(symbol == "/")
{
if(num2.toInt()==0)
return -2;
ret=num1.toInt()/num2.toInt();
}
return ret;
}
//计算
void MainWindow::on_btn_cal_clicked()
{
int result=setCount();
if(result==-1)
{
QMessageBox::warning(this,"提示","存在输入项为空!","确定");
ui->result->clear();
return;
}
else if(result==-2)
{
QMessageBox::warning(this,"提示","除数为0!","确定");
ui->result->clear();
return;
}
//绑定值到视图中
model->setItem(0,0,new QStandardItem(ui->num1->text()));
model->setItem(0,1,new QStandardItem(ui->comboBox->currentText()));
model->setItem(0,2,new QStandardItem(ui->num2->text()));
model->setItem(0,3,new QStandardItem(QString::number(result)));
//设置result需要显示的值
ui->result->setText(QString::number(result));
}
以上主要是强化tableview的使用,体会model的使用方法。