前些天刚开始接触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"); }