【Qt5】入门Qt开发教程,一篇文章就够了(Creator、混合开发、多窗体、资源文件、打包发布、exe图标)

时间是人类生活的空间,我们在时域上展开生活,构建自己的世界

零|说明

本文面向初学者介绍Qt5开发,不求全面
但求过程完整
每个步骤只说明【一种】操作方式
代码和操作并重
在给出代码的同时介绍开发环境的使用
力图使读者能较容易地【复现】任务
快速熟悉从【开发意图】到【打包发布】的一整套开发流程

一|任务导向

本文向Qt初学者介绍开发一款自定义的Notepad,也就是仿照Windows自带的记事本小应用的流程。
主界面如下:
在这里插入图片描述

界面说明

1:自定义的窗口图标,运行时在任务栏中显示的图标与之一致;
2:自定义窗口标题;
3:自定义工具栏,使用了自选的矢量图标;
4:将多个txt文档嵌入到同一个窗口中。

对初学Qt的朋友而言,首先要做的是熟悉Qt的开发环境,为了让读者把精力集中到开发技术的学习上,本文只介绍Qt Creator这种官方提供的集成开发环境(IDE)进行开发的过程。

二|认识Qt Creator开发环境

初见
不了解Qt Creator的朋友可以自行检索或到Qt官网了解。这里只需要知道,我们将使用这个工具完成接下来的开发就行了。

Qt Creator的下载和安装
1、官方通道下载速度比较着急,最好使用国内镜像源。找不到镜像源的额朋友可以参考我这篇文章:https://blog.csdn.net/qq_33904382/article/details/108632625
通过这篇文章介绍的告诉下载链接,可以很快下载完成,节省不必要的等待时间。

2、安装全程跟随安装引导点点点即可,略感困难的朋友可以参考我这篇文章:https://blog.csdn.net/qq_33904382/article/details/108643419中的图例,对照着完成Qt的安装。

新建工程
在Qt Creator中建立工程文件和在其他开发环境中类似,这里可以参考这篇文章:https://blog.csdn.net/qq_33904382/article/details/108743493建立一个名为Notepad的工程。
在这里插入图片描述

注意我们在Kits这个步骤和链接文章中不同,我们在这里选择的编译工具是MinGW 32bit,这和编译以及打包发布有较大关联。为了避免不必要的麻烦,建议初学的朋友和本文保持一致。

查看工程内容
建立工程后,会自动打开,Qt Creator切换到Edit界面:
在这里插入图片描述
上图显示了工程中自动生成了一些文件,单击左下角的绿色三角形图标,这个工程将进行编译、链接(编译链接的进度将被实时显示在右下角的方条中),然后运行。在屏幕上出现一个空白的窗口:

在这里插入图片描述
我们将对工程中的这些文件进行编辑,从而把窗口内容打磨成我们想要的样子。
所以,首先要认识一下工程中的这些文件:

一个工程文件:Notepad.pro

这个文件和工程为一些配置有关,在本文的开发过程中不会用到。我们将在打包发布的阶段对它进行必要的编辑。

一个主文件:main.cpp

这个文件和进行纯c/c++的代码编写时有所不同。为了削弱朋友们的陌生感,本文将逐行地介绍一下这个文件。但仅供了解,不必深究。

主c文件内容:

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

int main(int argc, char *argv[])
{
   
    QApplication EditorApp(argc, argv);
    Notepad Editor;
    Editor.show();

    return EditorApp.exec();
}

逐行解析:

最开始的两行用于引用notepad.hQApplication这两个头文件。QApplication是Qt库的一个头文件,所有的Qt类都有对应的头文件。

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

这行是定义了主函数。和纯c/c++开发一样,使用Qt开发环境编写的整个程序也是从这个函数开始执行。

int main(int argc, char *argv[])

这一行使用主函数的参数,创建了一个EditorApp对象。这是Qt程序的主函数中的固定操作,不必细究。

QApplication EditorApp(argc, argv);

下面这行声明了一个在mainwindow.hmainwindow.cpp中定义的那个Notepad类的对象Editor,我们编辑的主要对象。

Notepad Editor;

下面这行代码让我们编写的这个窗口显示在屏幕上。

Editor.show();

最后一句代码让程序进入Qt的事件循环,也就是窗口一直运行着,等待我们的各种操作,并根据我们在代码中的设定做出响应。

return EditorApp.exec();

逐行解析结束


一个后缀为ui的文件:mainwindow.ui

除了使用代码编辑,我们还可以通过这个文件对窗口的界面进行设计和改动。
而且借助开发环境中集成的Qt Designer,我们可以使用鼠标进行可视化编辑。双击这个ui文件即可打开Qt Designer界面,具体在第四部分熟悉Qt designer和窗体UI编辑方法中介绍。

三|了解Qt的混合开发模式

有的初学者认为应该使用纯代码编辑窗体,诚然,这是可以的,但确实不推荐。

因为窗体的大小通常可以变化,所以想要保持一定风格的界面,窗体上的按钮等控件的位置也就应该随着窗体的变化。这样就需要许多与界面相关的代码。

所以实际上,我们通常用Qt designer这个工具对窗体的界面进行可视化的编辑,代码部分只用来完成槽函数和对事件的响应。

这也就是所谓的Qt的混合开发模式。

四|熟悉Qt designer和窗体UI编辑方法

在这里插入图片描述
鼠标双击工程目录中的mainwindow.ui文件,Qt Creator会自动转到Qt designer,如下图所示:
在这里插入图片描述
中间白色背景区域就是窗体显示区域,灰色的方框就是窗体mainwindow,因为我们还没有为它添加控件,此时上面时空白的。

比较一|任务导向中的效果图,我们先准备在顶部给它加上一排工具栏。

1、在窗体上单击右键
2、在弹出的选项框中选择add toolbar(添加工具栏),单击左键

在这里插入图片描述
可以看到窗体顶部多了窄窄的一栏,右上角的元素框(上图右边那个红色圈中)中也显示出窗体上有一个名为toolbar的控件。这个名字是可以修改的,我们现在不管这些细节。

当然,这和我们想要的工具栏还是不同,现在我们让它看上去好一点,具体来说有两个步骤:

1、为工具栏添加一些action
2、为action设置图标,让它更好看一些

第二个步骤我们将在六|资源文件和自定义图标中说明,这一部分我们先考虑怎么让工具栏有一些像按键的东西,并且让这些“按键”被按下去后发生一些我们设想的事情。

为工具栏添加action
(1)新建action
首先就是新建acition吧,怎么做?
在这里插入图片描述
单击Qt designer底部的新建action按钮(上图中圈中的位置),弹出一个窗口:
在这里插入图片描述
在Text一栏中填写New,然后单击OK按钮,新建一个名为New的action:
在这里插入图片描述

可以看到,action栏中已经显示出这个actionNew的属性。
(2)把action添加到工具栏中
这步很简单,直接用鼠标把action拖到工具栏中即可。
在这里插入图片描述
使用同样的步骤,再为工具栏添加Open、Save、Exit、Paste、Redo、Undo等action。完成后形如下图这样,这个图里的窗口有两个工具栏,你也可以只用一个:
在这里插入图片描述
上图白色框是一个textedit控件,添加方法就是在Qt designer左侧的控件列表中找到textedit,拖入窗体范围即可。

到这里我们就把单个窗体的界面做完了,接下来看mainwindow所谓代码部分:
mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
   
class Notepadx;
}
class Notepadx : public QMainWindow
{
   
    Q_OBJECT
public:
    explicit Notepadx(QWidget *parent = nullptr);
    ~Notepadx();
private slots:
    void newDocument();
    void open();
    void save();
    void saveAs();
    void print();
    void exit();
    void copy();
    void cut();
    void paste();
    void 
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值