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_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(); ? ? ? //設(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)俄羅斯方塊(linux版本)
這篇文章主要為大家詳細(xì)介紹了linux版本C++實(shí)現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07C++編程異常處理中try和throw以及catch語句的用法
這篇文章主要介紹了C++編程異常處理中try和throw以及catch語句的用法,包括對Catch塊的計(jì)算方式的介紹,需要的朋友可以參考下2016-01-01關(guān)于C/C++中的side effect(負(fù)效應(yīng))和sequence point(序列點(diǎn))
不知你在寫code時(shí)是否遇到這樣的問題?int i = 3; int x = (++i) + (++i) + (++i); 問x值為多少?進(jìn)行各種理論分析,并在編譯器上實(shí)踐,然而可能發(fā)現(xiàn)最終的結(jié)果是不正確的,也是不穩(wěn)定的,不同的編譯器可能會(huì)產(chǎn)生不同的結(jié)果。這讓人很頭疼2013-10-10C語言實(shí)現(xiàn)頁面置換算法(FIFO、LRU)
這篇文章主要介紹了通過C語言實(shí)現(xiàn)的兩種頁面置換算法:先進(jìn)先出(FIFO)頁面置換算法和最近最久未使用(LRU)頁面置換算法。文中的代碼具有一定的學(xué)習(xí)或工作價(jià)值,快來跟隨小編學(xué)習(xí)一下吧2021-12-12