筆者模仿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()
{
}