亲宝软件园·资讯

展开

Qt计算器功能

梁光林 人气:0

该计算器主要通过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的使用方法。

加载全部内容

相关教程
猜你喜欢
用户评论