基於Qt的計算器

筆者模仿Win10自帶的計算器界面,使用Qt5做了一個計算器。拿來和大家分享一下,能力強大的人可以在此基礎上完善功能。

main.cpp

/*
    編者:[email protected]

    功能:基於Qt的計算器界面

    環境:Win10 Professional 1703 / Qt Creator 4.3.1 Based on Qt 5.9.1 (MSVC 2015, 32 bit) / mingw 5.3.0 32-bit

    備註:筆者模仿Win10自帶的計算器,實現了一個計算器的界面,並沒有實現相應的輸入功能
*/

#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QFont>
#include <QIcon>
#include <QApplication>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    QLabel *label;
    QPushButton *pushButton;
    QPushButton *pushButton_squ;
    QPushButton *pushButton_33;
    QPushButton *pushButton_44;
    QPushButton *pushButton_55;
    QPushButton *pushButton_div;
    QPushButton *pushButton_clear;
    QPushButton *pushButton_88;
    QPushButton *pushButton_9;
    QPushButton *pushButton_mul;
    QPushButton *pushButton_8;
    QPushButton *pushButton_7;
    QPushButton *pushButton_6;
    QPushButton *pushButton_dec;
    QPushButton *pushButton_5;
    QPushButton *pushButton_4;
    QPushButton *pushButton_3;
    QPushButton *pushButton_add;
    QPushButton *pushButton_2;
    QPushButton *pushButton_1;
    QPushButton *pushButton_dot;
    QPushButton *pushButton_equal;
    QPushButton *pushButton_0;
    QPushButton *pushButton_24;


public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    /* 設置對話框標題 */
    setWindowTitle(QObject::tr("計算器"));

    /* 去除問號標誌 */
    setWindowFlags(Qt::WindowCloseButtonHint | Qt::Dialog);

    /* 固定窗格大小 */
    setMinimumSize(QSize(368, 461));
    setMaximumSize(QSize(368, 461));

    /* 設置字體規格 */
    QFont font;
    font.setFamily(QStringLiteral("Consolas"));
    font.setPointSize(12);
    setFont(font);

    /* 設置計算器的logo */
    QIcon icon;
    icon.addFile(QStringLiteral("C:\\Users\\heaven\\Documents\\Qt\\Sample\\logo.jpg"), QSize(), QIcon::Normal, QIcon::Off);
    setWindowIcon(icon);

    /* 設置佈局的方向 */
    setLayoutDirection(Qt::LeftToRight);

    /* 無文本標籤 */
    label = new QLabel(this);
    label->setObjectName(QStringLiteral("label"));
    label->setGeometry(QRect(10, 10, 351, 81));
    label->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    label->setFrameShape(QFrame::Panel);

    /* 添加按鈕 */
    pushButton = new QPushButton(this);
    pushButton->setText(QObject::tr("%"));
    pushButton->setGeometry(QRect(10, 100, 81, 51));

    pushButton_squ = new QPushButton(this);
    pushButton_squ->setText(QObject::tr("\342\210\232"));
    pushButton_squ->setGeometry(QRect(100, 100, 81, 51));

    pushButton_33 = new QPushButton(this);
    pushButton_33->setText(QObject::tr("x\302\262"));
    pushButton_33->setGeometry(QRect(190, 100, 81, 51));

    pushButton_44 = new QPushButton(this);
    pushButton_44->setText(QObject::tr("1/x"));
    pushButton_44->setGeometry(QRect(280, 100, 81, 51));

    pushButton_55 = new QPushButton(this);
    pushButton_55->setText(QObject::tr("\342\234\226"));
    pushButton_55->setGeometry(QRect(190, 160, 81, 51));

    pushButton_div = new QPushButton(this);
    pushButton_div->setText(QObject::tr("\303\267"));
    pushButton_div->setGeometry(QRect(280, 160, 81, 51));

    pushButton_clear = new QPushButton(this);
    pushButton_clear->setText(QObject::tr("C"));
    pushButton_clear->setGeometry(QRect(100, 160, 81, 51));

    pushButton_88 = new QPushButton(this);
    pushButton_88->setText(QObject::tr("CE"));
    pushButton_88->setGeometry(QRect(10, 160, 81, 51));

    pushButton_9 = new QPushButton(this);
    pushButton_9->setText(QObject::tr("9"));
    pushButton_9->setGeometry(QRect(190, 220, 81, 51));

    pushButton_mul = new QPushButton(this);
    pushButton_mul->setText(QObject::tr("x"));
    pushButton_mul->setGeometry(QRect(280, 220, 81, 51));

    pushButton_8 = new QPushButton(this);
    pushButton_8->setText(QObject::tr("8"));
    pushButton_8->setGeometry(QRect(100, 220, 81, 51));

    pushButton_7 = new QPushButton(this);
    pushButton_7->setText(QObject::tr("7"));
    pushButton_7->setGeometry(QRect(10, 220, 81, 51));

    pushButton_6 = new QPushButton(this);
    pushButton_6->setText(QObject::tr("6"));
    pushButton_6->setGeometry(QRect(190, 280, 81, 51));

    pushButton_dec = new QPushButton(this);
    pushButton_dec->setText(QObject::tr("-"));
    pushButton_dec->setGeometry(QRect(280, 280, 81, 51));

    pushButton_5 = new QPushButton(this);
    pushButton_5->setText(QObject::tr("5"));
    pushButton_5->setGeometry(QRect(100, 280, 81, 51));

    pushButton_4 = new QPushButton(this);
    pushButton_4->setText(QObject::tr("4"));
    pushButton_4->setGeometry(QRect(10, 280, 81, 51));

    pushButton_3 = new QPushButton(this);
    pushButton_3->setText(QObject::tr("3"));
    pushButton_3->setGeometry(QRect(190, 340, 81, 51));

    pushButton_add = new QPushButton(this);
    pushButton_add->setText(QObject::tr("+"));
    pushButton_add->setGeometry(QRect(280, 340, 81, 51));

    pushButton_2 = new QPushButton(this);
    pushButton_2->setText(QObject::tr("2"));
    pushButton_2->setGeometry(QRect(100, 340, 81, 51));

    pushButton_1 = new QPushButton(this);
    pushButton_1->setText(QObject::tr("1"));
    pushButton_1->setGeometry(QRect(10, 340, 81, 51));

    pushButton_dot = new QPushButton(this);
    pushButton_dot->setText(QObject::tr("."));
    pushButton_dot->setGeometry(QRect(190, 400, 81, 51));

    pushButton_equal = new QPushButton(this);
    pushButton_equal->setText(QObject::tr("="));
    pushButton_equal->setGeometry(QRect(280, 400, 81, 51));

    pushButton_0 = new QPushButton(this);
    pushButton_0->setText(QObject::tr("0"));
    pushButton_0->setGeometry(QRect(100, 400, 81, 51));

    pushButton_24 = new QPushButton(this);
    pushButton_24->setText(QObject::tr("\302\261"));
    pushButton_24->setGeometry(QRect(10, 400, 81, 51));
}

Dialog::~Dialog()
{

}

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章