Qt實(shí)現(xiàn)計(jì)算器功能
本文實(shí)例為大家分享了Qt實(shí)現(xiàn)計(jì)算器功能的具體代碼,供大家參考,具體內(nèi)容如下
該計(jì)算器主要通過lineEdit獲取和顯示數(shù)字,通過tableview顯示計(jì)算過程。
通過tableview顯示計(jì)算的過程,QLineEdit獲取輸入的數(shù)字,QComboBox實(shí)現(xiàn)不同的計(jì)算類型。
效果:

代碼:
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("計(jì)算器");
? ? 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_Hmainwindow.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();
?
? ? //設(shè)置列標(biāo)題
? ? model->setHorizontalHeaderItem(0,new QStandardItem("數(shù)字A"));
?
? ? model->setHorizontalHeaderItem(1,new QStandardItem("符號(hào)"));
?
? ? model->setHorizontalHeaderItem(2,new QStandardItem("數(shù)字B"));
?
? ? model->setHorizontalHeaderItem(3,new QStandardItem("結(jié)果"));
?
? ? //將模型與視圖綁定
? ? ui->tableView->setModel(model);
?
? ? //設(shè)置表格單元不能編輯
? ? ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
?
? ? //設(shè)置列表寬度
? ? for(int i=0;i<4;++i)
? ? {
? ? ? ? ui->tableView->setColumnWidth(i,50);
? ? }
?
}
?
MainWindow::~MainWindow()
{
? ? delete ui;
}
?
int MainWindow::setCount()
{
? ? int ret=0;
?
? ? //獲取lineEdit上的內(nèi)容
? ? 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;
}
?
?
//計(jì)算
void MainWindow::on_btn_cal_clicked()
{
? ? int result=setCount();
? ? if(result==-1)
? ? {
? ? ? QMessageBox::warning(this,"提示","存在輸入項(xiàng)為空!","確定");
? ? ? ui->result->clear();
? ? ? return;
? ? }
? ? else if(result==-2)
? ? {
? ? ? ? QMessageBox::warning(this,"提示","除數(shù)為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)));
?
? ? //設(shè)置result需要顯示的值
? ? ui->result->setText(QString::number(result));
?
}以上主要是強(qiáng)化tableview的使用,體會(huì)model的使用方法。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++標(biāo)準(zhǔn)庫中的Stack(堆棧)和Queue(隊(duì)列)詳解
在C++標(biāo)準(zhǔn)模板庫(STL)中,stack和queue是兩種非常重要的容器適配器,這篇文章主要介紹了C++標(biāo)準(zhǔn)庫中Stack(堆棧)和Queue(隊(duì)列)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-10-10
C++實(shí)現(xiàn)動(dòng)態(tài)煙花效果
這篇文章主要介紹了利用C++實(shí)現(xiàn)的放煙花程序,用到了EGE圖形庫,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下2022-01-01
C++實(shí)現(xiàn)LeetCode(兩個(gè)有序數(shù)組的中位數(shù))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(兩個(gè)有序數(shù)組的中位數(shù)),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ)
本文主要介紹了VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ),實(shí)現(xiàn)了視頻,拍照,保存這三個(gè)功能。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
C語言函數(shù)基礎(chǔ)教程分類自定義參數(shù)及調(diào)用示例詳解
這篇文章主要為大家介紹了C語言函數(shù)的基礎(chǔ)教程,主要包含C語言函數(shù)的分類,C語言函數(shù)自定義,C語言函數(shù)的參數(shù)及C語言函數(shù)的調(diào)用示例詳解,有需要的朋友可以借鑒參考下2021-11-11
C++中string字符串分割函數(shù)split()的4種實(shí)現(xiàn)方法
最近筆試經(jīng)常遇到需要對(duì)字符串進(jìn)行快速分割的情景,下面這篇文章主要給大家介紹了關(guān)于C++中string字符串分割函數(shù)split()的4種實(shí)現(xiàn)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Visual Studio 2019安裝使用C語言程序(VS2019 C語言)
這篇文章主要介紹了Visual Studio 2019安裝使用C語言程序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

