QT入门之 Hello World

时间:2021-04-13 17:01:24

上篇文章我讲解了怎么去安装QT开发环境,下面我们讲解怎么去新建一个工程,工程由哪些结构组成。这里我们回顾一些知识点。


我的开发坏境是Ubuntu16.04 TLS ,我们用到的安装包截图如下,一个是QT Creater,一个是QTLibary。   QTCreater是一个集成开发环境,我们不用也可以,直接命令行写代码,但是很多东西不是很方便,建议大家一并安装上。

QT入门之 Hello World


QT Assistant  (QT助手) 是文档阅读器,我们可以查看我们需要的关于QT资料,和一些库和函数接口的讲解。

Qt  Designer (QT 设计师) 是强大的跨平台GUI布局和格式构建器 (和ui相关,后面就会明白)

QT Demos(Qt 演示程序和实例) 

Qt  Linguist (Qt  语言家) 提供了一套加速应用程序翻译和国际化的工具。


下面开始创建我们的第一个工程

这里得补充一点:我们创建的工程目录路径的所有者必须是用户而不是root,不然会创建失败。可以在用户目录下创建工程目录或者在root下创建目录并用chown owner  dir修改成用户拥有着。

2.1  新建GUI应用 

点击文件->新建工程 ->选择QT控件项目->QT GUI 应用

QT入门之 Hello World


设置工程名字和工程所在的路径

QT入门之 Hello World


这里需要注意的是我保持默认状态就行,使用影子构建这个勾不要去掉了,这个的作用是让我们编译的程序和生成的程序分别在两个文件夹,在第一张图片里面可以看到有两个文件夹,hello和hello-build-Destop-QT.  hello存放的是源码文件,hello-build-Destop-QT存放的是生成的文件等

QT入门之 Hello World


类名可以随便取,相当于我们自己的类就保存在这个类名字下面,基类我们选择Qialog.  表明我们这个类继承与Qialog这个类,下面几个是头文件和源文件,还有一个是界面文件(很重要,我们下面讲解)

QT入门之 Hello World


下面就是我们创建好的工程和我自己编写的main.cpp文件。下面我会带着大家一起分析这个源码。

QT入门之 Hello World


左下角有个绿色三角形代表运行,或者在命令行下使用qmake -porject main.cpp   将生成一个hello.pro的工程文件,然后qmake 将生成Makefile文件帮助我怎么去编译这些文件,最后make就成功了。  大家也会发现集成开发坏境是一部到位,而命令行下需要很多步骤,想宏处理,连接库,连接头文件等,相对麻烦一点,但是对一个项目了解得相对透彻一点,对系统了解得更加全面。


下面开始讲解代码其他头文件不用看,我们创建GUI工程自动生成的,我们着重关注main.cpp和helloworld.ui这两个文件。

#include <QApplication>
#include "helloworld.h"
#include <QDialog>
#include <QLabel>
#include <ui_helloworld.h>
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);  
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); /* 设置编码,防止中文乱码 */
    QDialog w;   /* 创建一个 QDialog对象,是对话框*/
#if 0      
    w.resize(400,300);                /* 对话框大小是400*300 */
    QLabel lable(&w);                 /* 创建QLable对象,父窗口是w */
    lable.move(10,120);			/* lable 标签在对话框中的相对位置*/
    //lable.setText("Hello World ! 喜爱Linux/熟悉python/精通C");                  /* 中文乱码 */
    lable.setText(QObject::tr("Hello World ! 喜爱Linux/熟悉python/精通C"));       /* 中文不乱码 */
#else
     Ui::HelloWorld ui;                
     ui.setupUi(&w);
#endif
    w.show();
    return a.exec();
}

前几行是头文件,一个头文件名字代表一个类

QApplication a(argc, argv); 任何一个QT GUI程序都需要一个QApplication 对象


大家这里会非常奇怪我这里为啥要用一个if 0来作为选择开关,因为这里有两种办法去创建这个工程文件,如果走if 1部分代表的是手动写一些窗口的显示和标件 去显示Hello World ! 喜爱Linux/熟悉python/精通C ,如果走if 0部分代表的是我们手动用QT Designer创建界面文件。

我们点击界面文件下的helloworld.ui文件,然后再filter找到Label,然后按住鼠标左键将它拖到主设计去的界面上,在双击它进入编辑状态输入Hello World ! 喜爱Linux/熟悉python/精通C   ,然后保存,我们在main.cpp文件就可以调用我们手动画图设置界面程序,需要包含#include <ui_helloworld.h>  ,因为我们helloworld.ui编译后生成的头文件就是#include <ui_helloworld.h> ,相当于自己创建的类名是Ui::HelloWorld

上面我们手动写代码和手动画图设计两者的效果都是一样的。

编译ui程序我们可以用命令行实现:uic -o ui_helloworld.h helloworld.ui


创建工程基本到此为止,以后的文章我也会从易到难由博文的形式讲解出来。QT是基于C++开发的,所以大家一定要有一点C++基础,这里给大家推荐基本学习QT的书籍:《QT Creator 快速入门》和《C++ Primer 中文版(第四版)》

参考博主:http://blog.csdn.net/goforwardtostep/article/details/52674579#comments


由于博主知识储备能力有限,如有错误,还望不吝指点。

                                                                                                          @copyright     Linux_Google