前些天刚开始接触QT,对QT的开发环境有了些许了解。觉得用QT写一个软件还是很方便的。当然由于0基础遇到的问题也不少。
1.对于QT学习方法还在探究之中,目前想到的,认为比较有效的方法就是先看教学视频,然后试着编写一些自己感兴趣的小软件。通过软件去查漏补缺。(希望大佬们推荐一下更有效的学习方法)。
2.当我写完一个计算器程序以后,我想在我的根目录里面去运行 *.exe 文件,发现根本不能运行,他告诉我缺少某个.dll文件。然后我又按照视频里面的方法去修改了环境变量,还真的有效。然后我把程序拿到女朋友的电脑去运行,系统又提示我缺少某个 .dll 文件。然后我又去查了下资料,说什么QT是动态编译的,需要添加他所包含的一系列 *.dll文件。随后就去添加了各种 *.dll 文件。添加完了以后,还是不能运行,又去查,说有些需要包含的文件并不会显示出来。接着 我又发现了 windeployqt 。这东西是真的好用,他直接把你运行的程序所包含的 .dll文件直接全部复制到你的根目录下。这样就省去了自己复制的步骤。
3.虽然程序在他人的电脑上可以运行了,但是包含的东西太多,软件太大了。然后在好心网友的知道下,知道了 inno setup 这个软件,它能直接打包你需要运行的程序和他附属的各种文件。至此,我的简便计算器软件,就完全写好了。。。。。。。。。。。。。。。。
下面上传我的代码。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QString>
#include <QMessageBox> // 消息提示框
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
//建立0-9的槽
private slots:
void zeroslotclicked();
private slots:
void oneslotclicked();
private slots:
void twoslotclicked();
private slots:
void threeslotclicked();
private slots:
void fourslotclicked();
private slots:
void fiveslotclicked();
private slots:
void sixslotclicked();
private slots:
void sevenslotclicked();
private slots:
void eightslotclicked();
private slots:
void nineslotclicked();
//建立加减乘除等于点的槽
private slots:
void addslotclicked();
private slots:
void subtractslotclicked();
private slots:
void rideslotclicked();
private slots:
void divideslotclicked();
private slots:
void equalslotclicked();
private slots:
void decimalslotclicked();
private slots:
void cslotclicked();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QApplication>
#include <QString>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setMaximumSize(537,410); //设置为固定的大小
this->setMinimumSize(537,410);
// 0-9 .
QObject::connect(ui->zero,SIGNAL(clicked()),this,SLOT(zeroslotclicked()));
QObject::connect(ui->one,SIGNAL(clicked()),this,SLOT(oneslotclicked()));
QObject::connect(ui->two,SIGNAL(clicked()),this,SLOT(twoslotclicked()));
QObject::connect(ui->three,SIGNAL(clicked()),this,SLOT(threeslotclicked()));
QObject::connect(ui->four,SIGNAL(clicked()),this,SLOT(fourslotclicked()));
QObject::connect(ui->five,SIGNAL(clicked()),this,SLOT(fiveslotclicked()));
QObject::connect(ui->six,SIGNAL(clicked()),this,SLOT(sixslotclicked()));
QObject::connect(ui->seven,SIGNAL(clicked()),this,SLOT(sevenslotclicked()));
QObject::connect(ui->eight,SIGNAL(clicked()),this,SLOT(eightslotclicked()));
QObject::connect(ui->nine,SIGNAL(clicked()),this,SLOT(nineslotclicked()));
QObject::connect(ui->decimal,SIGNAL(clicked()),this,SLOT(decimalslotclicked()));
// 加减乘除等
QObject::connect(ui->add,SIGNAL(clicked()),this,SLOT(addslotclicked()));
QObject::connect(ui->subtract,SIGNAL(clicked()),this,SLOT(subtractslotclicked()));
QObject::connect(ui->ride,SIGNAL(clicked()),this,SLOT(rideslotclicked()));
QObject::connect(ui->divide,SIGNAL(clicked()),this,SLOT(divideslotclicked()));
QObject::connect(ui->equal,SIGNAL(clicked()),this,SLOT(equalslotclicked()));
//复位
QObject::connect(ui->c,SIGNAL(clicked()),this,SLOT(cslotclicked()));
}
MainWindow::~MainWindow()
{
delete ui;
}
//获取0-9 Button的值
double flag,counter=1.000000,result,firstnum,secondnum,thirdnum,fourthnum;
char midresult;
void MainWindow::zeroslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+0.000000/counter;
}
else
{
result=result*10+0;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::oneslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+1.000000/counter;
}
else
{
result=result*10+1;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::twoslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+2.000000/counter;
}
else
{
result=result*10+2;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::threeslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+3.000000/counter;
}
else
{
result=result*10+3;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::fourslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+4.000000/counter;
}
else
{
result=result*10+4;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::fiveslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+5.000000/counter;
}
else
{
result=result*10+5;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::sixslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+6.000000/counter;
}
else
{
result=result*10+6;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::sevenslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+7.000000/counter;
}
else
{
result=result*10+7;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::eightslotclicked()
{
if(flag==1)
{
counter=counter*10.0000;
result=result+8.000000/counter;
}
else
{
result=result*10+8;
}
ui->ResultEdit->setText(QString::number(result));
}
void MainWindow::nineslotclicked()
{
if(flag==1)
{
counter=counter*10.000;
result=result+9.00000/counter;
}
else
{
result=result*10+9;
}
ui->ResultEdit->setText(QString::number(result));
}
// 显示加减乘除等于
void MainWindow::decimalslotclicked()
{
flag=1;
ui->ResultEdit->setText(QString::number(result)+".");
}
void MainWindow::addslotclicked()
{
flag=0;
firstnum=result;
result=0;
counter=1.000000;
midresult='+';
ui->ResultEdit->setText("+");
}
void MainWindow::subtractslotclicked()
{
flag=0;
firstnum=result;
result=0;
counter=1.0000000;
midresult='-';
ui->ResultEdit->setText("-");
}
void MainWindow::rideslotclicked()
{
flag=0;
firstnum=result;
result=0;
counter=1.000000;
midresult='*';
ui->ResultEdit->setText("*");
}
void MainWindow::divideslotclicked()
{
flag=0;
firstnum=result;
result=0;
counter=1.000000;
midresult='/';
ui->ResultEdit->setText("/");
}
void MainWindow::equalslotclicked()
{
flag=0;
secondnum=result;
//判断运算法则,然后进行相应的运算;
if(midresult=='+')
{
result=firstnum+secondnum;
}
if(midresult=='-')
{
result=firstnum-secondnum;
}
if(midresult=='*')
{
result=firstnum*secondnum;
}
if(midresult=='/')
{
if(secondnum==0)
{
QMessageBox::warning(this,"Error Message","Error");
return;
}
result=firstnum/secondnum;
}
ui->ResultEdit->setText(QString::number(result));
result=0;
counter=1.000000;
}
void MainWindow::cslotclicked()
{
flag=0;
firstnum=0;
secondnum=0;
result=0;
counter=1.000000;
midresult='C';
ui->ResultEdit->setText("0");
}