1. 程式人生 > >QT學習之路之計算器開發

QT學習之路之計算器開發

前幾天老師簡單的講解了下QT的訊號與槽,並且實現了一個簡單的計算機加法,如下圖:

我根據對老師所講類容的理解以及一些資料的查詢自己做了一個簡單的計算器。

1 首先上個介面,頁面佈局用Grid Layout。


2 建立各種槽,程式碼如下:

mainwindow.h檔案程式碼:

#ifndefMAINWINDOW_H
#defineMAINWINDOW_H
#include<QMainWindow>
namespaceUi{
classMainWindow;
}
classMainWindow:publicQMainWindow
{
Q_OBJECT
public:
explicit
MainWindow(QWidget*parent=0);
~MainWindow();
privateslots:
voidon_btAC_clicked();
voidon_btADdd_clicked();
voidon_bt0_clicked();
voidon_bt1_clicked();
voidon_bt2_clicked();
voidon_bt3_clicked();
voidon_bt4_clicked();
voidon_bt5_clicked();
voidon_bt6_clicked();
voidon_bt7_clicked();
voidon_bt8_clicked();
voidon_bt9_clicked();
voidon_btJian_clicked();
voidon_btCheng_clicked();
voidon_btChu_clicked();
voidon_btValue_clicked();
public:
voiddisplay();
private:
Ui::MainWindow*ui;
QStringcurrentNumber;
QStringlastNumber;
intans=0;
};
#endif//MAINWINDOW_H

mainwindow.cpp檔案程式碼:

#include"mainwindow.h"
#include"ui_mainwindow.h"
MainWindow::MainWindow(QWidget*parent):
QMainWindow(parent),
ui(newUi::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
deleteui;
}
//label顯示當前值
voidMainWindow::display()
{
ui->label->setText(currentNumber);
}
//清除
voidMainWindow::on_btAC_clicked()
{
currentNumber="0";
lastNumber="0";
ans=0;
display();
}
//新增阿拉伯數字
voidMainWindow::on_bt0_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="0";
display();
}
voidMainWindow::on_bt1_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="1";
display();
}
voidMainWindow::on_bt2_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="2";
display();
}
voidMainWindow::on_bt3_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="3";
display();
}
voidMainWindow::on_bt4_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="4";
display();
}
voidMainWindow::on_bt5_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="5";
display();
}
voidMainWindow::on_bt6_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="6";
display();
}
voidMainWindow::on_bt7_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="7";
display();
}
voidMainWindow::on_bt8_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="8";
display();
}
voidMainWindow::on_bt9_clicked()
{
if(currentNumber=="0")
currentNumber.clear();
currentNumber+="9";
display();
}
//新增操作符
//加法
voidMainWindow::on_btADdd_clicked()
{
lastNumber=currentNumber;
currentNumber.clear();
ans=1;
}
//減法
voidMainWindow::on_btJian_clicked()
{
lastNumber=currentNumber;
currentNumber.clear();
ans=2;
}
//乘法
voidMainWindow::on_btCheng_clicked()
{
lastNumber=currentNumber;
currentNumber.clear();
ans=3;
}
//除法
voidMainWindow::on_btChu_clicked()
{
lastNumber=currentNumber;
currentNumber.clear();
ans=4;
}
//等號顯示
voidMainWindow::on_btValue_clicked()
{
if(ans==1)
{
inta=currentNumber.toInt()+lastNumber.toInt();
currentNumber=QString::number(a,10);
ui->label->setText(currentNumber);
}
if(ans==2)
{
inta=lastNumber.toInt()-currentNumber.toInt();
currentNumber=QString::number(a,10);
ui->label->setText(currentNumber);
}
if(ans==3)
{
inta=currentNumber.toInt()*lastNumber.toInt();
currentNumber=QString::number(a,10);
ui->label->setText(currentNumber);
}
if(ans==4)
{
inta=lastNumber.toInt();
intb=currentNumber.toInt();
doublec=(double)a/b;
currentNumber=QString::number(c);
ui->label->setText(currentNumber);
}
}

這次計算器實現的功能比較單一,只有簡單的加減乘除,在以後的學習中我會繼續新增完善功能。

相關推薦

QT學習計算器開發

前幾天老師簡單的講解了下QT的訊號與槽,並且實現了一個簡單的計算機加法,如下圖: 我根據對老師所講類容的理解以及一些資料的查詢自己做了一個簡單的計算器。 1 首先上個介面,頁面佈局用Grid Layout。 2 建立各種槽,程式碼如下: mainwindow.h檔案程

python學習——軟件開發規範/time模塊

所在 amp 計算 運行 () 想要 開發 cor 時間 目錄規範:   (1)文件的規範寫法   bin   可執行文件   conf  配置文件   core  主要業務邏輯   db   數據文件   lib   庫(公共代碼 第三方模塊)   log 

小程式學習二:開發工具部分功能和專案結構介紹

上一篇講到了新建專案進來,本篇主要講解開發工具部分功能和專案結構介紹,按照我的風格來,先上目錄 開發工具的部分功能簡介 小程式專案目錄簡介 以下幾個功能是我覺得比較方便喜歡的 自動儲存(設定----編輯設定-----選中修改檔案時自動儲存) console(控

android 學習h5混合開發專案經歷

  首先需求是要做一個h5呼叫原生去傳送udp mqtt 儲存 tcp 相機之類的功能 第一步在mainActivity 註冊監聽 private void initWebLoad(String url) { Util.synCookies(getApplica

Qt學習自定義按鈕

按鈕有三種狀態:當滑鼠點選的時候,當滑鼠進入按鈕的時候,當滑鼠沒有進入按鈕的時候,這3個不同的狀態。 上程式碼~~~~ pushBtn_widget.h  /* 貼圖按鈕的狀態: 進入, 離開, 按下 */ #ifndef PUSHBTNWIDGET_H #def

Qt學習啟動瀏覽器

       QtWebKit模組屬於第三方軟體模組,不過遵守LGPL協議。在使用網頁模組程式設計的時候,需要包含到下面的標頭檔案: #include<QtWebKit>為了支援使用這個庫需要在工程檔案中加入下面的這行: QT += webkitwidgets

Golang 學習一:開發環境搭建

Golang 學習:開發環境搭建 一、下載適合本機的Golang版本 注意對應好自己PC 的system. Windows 直接下載對應的msi安裝即可,Linux注意發行版本。 本文L

Qt學習 QTextEdit 重溫

其實,QTextEdit 也有對文字的編輯函式, 剪下,複製,撤銷.....  看看下面的這個簡單的例子: 控制元件一目瞭然。按鈕 + QTextedit 物件 , 垂直佈局。 ----------------------------------------------

Qt學習獲取檔案資訊

QFileInfo類提供了對檔案進行操作時獲取的檔案資訊,包括檔名, 檔案大小(位元組), 檔案建立時間, 檔案最後修改時間,檔案最近訪問時間以及一些檔案是否為目錄,檔案,或者符號連線,和讀寫等屬性。 不廢話了,先看看程式碼~~~~ fileInfo_widget.h

Unity3d修煉:遊戲開發中,3d數學知識的練習【1】(不斷更新.......)

turn tor rdo pre 長度 scrip 縮放 unity3d float #pragma strict public var m_pA : Vector3 = new Vector3(2.0f, 4.0f, 0.0f); public var m_pB :

No.11 selenium學習瀏覽器大小

bsp selenium img es2017 nbsp ges 最大 blog 技術分享 通過set_window_size()方法可以設置打開的瀏覽器大小 maximize_window()方法可以把當前瀏覽器最大化 例子: No.11 selenium學習之路之瀏

7_pythonpython計算器

muti ret add 乘除 python ply dal 代碼 程序說明 7_python之路之python計算器 1.程序說明:Readme.cmd 1.程序文件及說明: calculator.py 2.python版本:python-3.5.3 3.程序使

java學習javaSE基礎3

區別 之路 函數重載 while循環 a + b 內存 sum get 錯誤 所有代碼都未經測試。。 1:for循環的格式? for循環格式: for(初始化表達式;條件表達式;循環後的操作表達式) { 循環體; } 執行流程: * a:執行初始化語句 * b:

網路學習基礎詳解① 計算機網路與Internet

網路學習之路之基礎詳解① 計算機網路概述之整體瞭解 首先我們理清總體思路,來看看計算機網路概述整體的框圖 從上圖我們可以大致瞭解到計算機網路包含內容,下面我們來對各方面進行詳細學習: (1)計算機網路VS Internet ①基礎理解: 計算機網路:一些互相連線的,自治的計算機的

前端成長必經元件化思維與技巧 Web元件化開發

1-1課程導學.mp42-1環境及知識準備.mp43-1 技術選型分析.mp43-2 工程構建安裝.mp44-1 css模組化設計.mp44-2 css模組化設計(程式碼).mp44-3 js元件化及自適應mp4.mp44-4 spa設計.mp44-5 構建工具及上線指導.mp45-1 首頁-抽象元

Javaweb新手JavaWeb開發環境配置篇

首先需要搭建Javaweb的開發環境,先要安裝開發安裝包JDK和伺服器tomcat。配置如下 jdk及tomcat如何配置環境變數 工具/原料 1,JDK: 下載地址http://www.oracle.com/technetwork/java/javase/do

機器學習python基礎9

“”" 在程式開發過程中,如果對某些程式碼的實行不能確定可以增加語句來捕獲異常,以下是完整的異常程式碼 “”" try: num=int(input(“請輸入一個整數”)) result=8/num; print(result) except ZeroDivisionError: #exce

Android 小白 的 學習 阿里雲上 Tomcat Web伺服器的搭建以及配置

1 、擁有一個自己的阿里雲ESC伺服器(因為我的是windows server 這裡就以我自己的為例) 2 、在阿里雲伺服器下載並且安裝 java jdk  3、配置環境變數  

Android NDK學習起航先買一艘船

      感覺Android寫了這麼久了, 也該學點裝逼的技能了。所以我把目光放在了NDK和C++上,只要玩轉了這兩個, 我就能去玩OpenCV和TensorFlow了,想想就美滋滋。今天先來基礎配置一個最簡單的NDK環境。基於AndroidStudio 3.2,使用Cma

C語言學習陣列的一些淺見

第一次寫部落格文章,有什麼不對的地方,請勿見怪. 對函式傳遞資料的一些體會.當我們定義一個函式的時候,當引數傳遞的是陣列的時候我們初學者一般會這樣定義: 如寫一個數組遍歷列印時會這麼寫: void print(int a[10],int length){ int i=0; for(i=0;