嵌入式项目2--QT学习笔记

近来想学着做一个上位机软件,因而好好学了学Qt,目标是为项目的板子做一个上位机通信的软件。学习教材《Qt Creator 快速入门》,第三版,霍亚飞编著,笔者学习是买的教材书,这样看着比较有感觉,并且以后也可以回头学习。与此同时,附上该教材代码分享:
链接: https://pan.baidu.com/s/1nuJNClb 密码: 6u3n,这样一来,上手较快,省下了很多时间。
qt社区提供软件下载:
http://www.qter.org/


一、备器

1、下载qt
由于网上关于qt版本繁多,而社区提供的源码主要是QT4的,由于qt4版本不好下载,且需安装多个压缩文件,应而本文直接使用最新的qt5.6作为开发工具,另外需要注意的是qt5.6需要下载含有mingGW的32bits版本。切记使用最新版本的qt,32位的可以运行在64位的机器上! 本文使用的是qt-opensource-windows-x86-mingw492-5.6.2.exe版本,大小为1G。工程名或者安装目录一定不要出现中文字符

2、如何发布Qt

1、Qt Widgets Application可执行程序发布方式

首先用 QtCreator 新建一个 Qt Widgets Application 项目,直接用默认的 QMainWindow 程序就可以了,项目名字假定是 SerialPort。
然后以 Release/Debug 方式编译生成 exe 程序:
生成的程序运行正常之后,找到项目的生成目录,比如 项目源码路径:
C:\QtPros\hellomw\
它的项目生成目录是
C:\QtPros\build-hellomw-Desktop_Qt_5_4_0_MinGW_32bit-Release\
进入这个文件夹,在进入它的子文件夹 release/debug 里面,找到 SerialPort.exe ,
将这个exe 复制到一个新的单独的文件夹里用于发布,比如存到 
D:\SerialPort\ 文件夹里面。


然后从开始菜单打开 Qt 命令行(注,在Qt的子目录下有一个 Qt5.6 for Desktop(MinGW 32bit,它就是Qt命令行)),输入命令 :
cd /d D:\SerialPort
然后使用 windeployqt 工具命令:
windeployqt SerialPort.exe
然后可以在 D:\SerialPort 文件夹里看到 windeployqt 工具自动复制的插件文件夹
和 dll文件、qm文件。这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。
把 D:\SerialPort 文件夹 打包就可以发布了,不用自己一个个找 dll 文件了。
D:\SerialPort 文件夹里的qm文件是多国语言翻译文件,不需要可以删了,
其他的都保留。
(注:此步骤宜在网吧的第一台机子进行,它安装了QT creator,运行成功过。)

2、这么做,还是太大了,一个小软件有600MB以上,压缩处理它。
http://enigmaprotector.com/en/downloads.html
下载–Enigma Virtual Box,将文件打包处理
嵌入式项目2--QT学习笔记_第1张图片
最后生成一个exe文件,可以在其他环境下直接打开。


二、实战演练(学习丁林松视频教学,以下为学习过程的笔记)

A. 命令行界面实现
Ptoject1:制作一个命令行。
ctrl+L–垂直布局 ctrl+R–编译
1)通过改变多信息文本,修改字体大小与位置。
2)设置固体大小:(用this指针来修改)

this->setMaximumSize(393,171);
this->setMinimumSize(393,171);

3)设置程序标题
this->setWindowTitle(“命令行”);
4) 清除命令行输入后的空格

QString startProgram = ui->cmdLineEdit->text();
process->start(startProgram.trimmed());//清除空格

5) 输入回车连接到确认按钮–信号/糟连接
在构造函数里添加连接槽的操作

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setMaximumSize(400,200);
    this->setMinimumSize(400,200);
    this->setWindowTitle("命令行");
    QObject::connect(ui->cmdLineEdit,SIGNAL(returnPressed()),this,SLOT(on_submitButton_clicked()));
//cmdLineEdit里面按下了回车(returnPressed()),即连接到确认按钮(on_submitButton_clicked())
}

6)效果图
嵌入式项目2--QT学习笔记_第2张图片
代码分享:
https://github.com/wangwangmingyue/QT5.git
B.计算器软件实现
1) 槽函数:
//点击“计算”按钮连接到槽函数进行计算,然后将结果显示至ui->ResultEdit.

QObject::connect(ui->CalButton,SIGNAL(clicked()),this,SLOT(calslot()));

2) QMessageBox 消息框,可以将结果或者警告信息弹出

 QMessageBox::information(this,"Result:",QString::number(result));

3)主函数代码

//槽函数
void MainWindow::calslot()
{
    int first = ui->FirstEdit->text().toInt();
    int second = ui->SecondEdit->text().toInt();
    int result = 0;
    //comboBox进行符号选择,0为‘+’,依次类推
    switch(ui->comboBox->currentIndex())
    {
      case 0:
        result = first + second;
        ui->ResultEdit->setText((QString::number(result)));
        QMessageBox::information(this,"Result:",QString::number(result));
        break;
      case 1:
        result = first - second;
        ui->ResultEdit->setText((QString::number(result)));
        QMessageBox::information(this,"Result:",QString::number(result));
        break;
      case 2:
        result = first * second;
        ui->ResultEdit->setText((QString::number(result)));
        QMessageBox::information(this,"Result:",QString::number(result));
        break;
      case 3:
        if(second==0)
        {
            QMessageBox::warning(this,"Error Message","Second Cannot be zero!");
            return ;
        }
        else
        {
            result = first / second;
            ui->ResultEdit->setText((QString::number(result)));
            break;
        }
       default:break;
    }
}

效果图:
嵌入式项目2--QT学习笔记_第3张图片
嵌入式项目2--QT学习笔记_第4张图片

你可能感兴趣的:(qt学习)