網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
本文實(shí)例為大家分享了Qt實(shí)現(xiàn)計(jì)算器功能的具體代碼,供大家參考,具體內(nèi)容如下
該計(jì)算器主要通過(guò)lineEdit獲取和顯示數(shù)字,通過(guò)tableview顯示計(jì)算過(guò)程。
通過(guò)tableview顯示計(jì)算的過(guò)程,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的使用方法。
原文鏈接:https://blog.csdn.net/c_shell_python/article/details/85066835
相關(guān)推薦
- 2022-08-05 RedisConfig 配置文件
- 2022-05-13 this.$route.params獲取不到
- 2022-06-02 Python學(xué)習(xí)之迭代器詳解_python
- 2022-09-20 windows?server2008?R2?角色遷移問(wèn)題詳解_win服務(wù)器
- 2022-11-02 React中編寫CSS實(shí)例詳解_React
- 2022-08-31 Flask接收上傳圖片方法實(shí)現(xiàn)_python
- 2022-05-18 解決iOS驗(yàn)證碼顯示在左邊問(wèn)題_IOS
- 2022-09-22 Windows MongoDB服務(wù)無(wú)法啟動(dòng),錯(cuò)誤 1053的一種情況和解決辦法
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支