• 1.1安装QT


    注:本次所有代码均在Qt5.8版本运行

    1.1.1 下载安装包

    官网:download.qt.io/archive/qt/5.8/5.8.0/

    百度网盘:pan.baidu.com/s/1cpjQEi

    选择qt-opensource-windows-x86-mingw530-5.8.0.exe进行下载。

    1.1.2 安装

    双击exe,全部点下一步即可完成安装。以下为安装完成画面。

    1.1.3、运行我的第一个程序

    (1) 运行Qt Creater 4.2.1,选择文件=》新建文件或项目=》Application=》Qt Widgets Application。

    (2)输入项目名称和项目路径。

    (3)输入类名MyFirstWidget,基类选择QWidget。

    (4)点击下一步,完成。

    好,现在,我们按Ctrl+R运行一下程序,看是否可以编译并运行。如果不出意外的话,一个空白窗口将出现在屏幕上。

    1.1.4项目文件简介

    打开你的工程文件夹,这时会生成2个文件夹

    build-MyFirstWidget-Desktop_Qt_5_8_0_MinGW_32bit-Debug和

    MyFirstWidget

    1.1.4.1 build-MyFirstWidget-Desktop_Qt_5_8_0_MinGW_32bit-Debug文件夹

    • debug和release文件夹:打开debug文件夹,双击MyFirstWidget.exe,可以看到刚才的窗口再次显示。再打开release文件夹,发现里面为空。这是因为debug存放调试版本的可执行程序,release存放发布版本,当前编译的为debug版本,所以应用程序放在debug文件夹下。
    • Makefile,Makefile.Debug,Makefile.Release:这三个文件描述了代码的编译规则,这是Qt自动生成更新的,大家可以不必管。
    • ui_myfirstwidget.h:与ui文件对应的头文件,并且格式都为ui_xxx.h,这个文件也是Qt自动生成更新的,大家可以不必管。

    1.1.4.2 MyFirstWidget文件夹

    MyFirstWidget文件夹

    • main.cpp:主函数源文件。
    • myfirstwidget.h和myfirstwidget.cpp:窗口类的头文件和源文件。
    • myfirstwidget.ui:设计师界面类文件。
    • MyFirstWidget.pro.user:用于记录打开工程的路径,所用的编译器、构建的工具链、生成目录、打开工程的qt-creator的版本等,可以打开此文件看一下,其实就是一个xml文件,一般情况,用户不需要理会。
    • MyFirstWidget.pro:Qt工程文件,这个文件非常重要,本节中先简单介绍一下,随着我们学习的深入,我会对这个文件做详细介绍。

    我们详细看一下这个文件:

    #-------------------------------------------------
    #
    # Project created by QtCreator 2017-07-21T20:58:22
    #
    #-------------------------------------------------
    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    TARGET = MyFirstWidget
    TEMPLATE = app
    
    # The following define makes your compiler emit warnings if you use
    # any feature of Qt which as been marked as deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    
    # You can also make your code fail to compile if you use deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    SOURCES += main.cpp
           myfirstwidget.cpp
    
    HEADERS  += myfirstwidget.h
    
    FORMS    += myfirstwidget.ui
    

    pro文件解析:

    注释:使用#号,作单行注释。

    语法:=号:你可以把等号左边的类型理解为变量,等号右边的理解为值。

    +=号:你可以把左边的理解为变量列表,右边的为需要加到列表中的值。

    号:可以分行书写,但仍为一行。

    逐行语句解释:

    • QT += core gui 需要引用工程的模块,core表示核心模块,gui表示界面模块。Qt的代码都是模块化方式组织的,如果你想引入某方面的功能,就需要将对应模块引入到你的工程中。例如我想添加数据库模块,则可以写成QT += core gui sql。关于各模块的使用,我会在后面的分享中介绍。
    • greaterThan(QT_MAJOR_VERSION,4):QT+=widgets:这是Qt5为了兼容Qt4而专门设计的,语句大意为如果Qt版本大于4,则将widgets模块加入到QT变量中,从这一点,我们可以推敲出Qt4的widgets模块是和gui模块为一体的,而Qt5已经将其分离了出来。
    • TEMPLATE=app:工程所使用的模版。app表示是一个窗口应用程序。如果是lib则表明是一个动态库模版。
    • DEFINES+=QT_DEPRECATED_WARNINGS:定义编译选项。QT_DEPRECATED_WARNINGS表示当Qt的某些功能被标记为过时的,那么编译器会发出警告。
    • SOURCES+=main.cpp
      myfirstwidget.cpp:源文件。
    • HEADERS+=myfirstwidget.h:头文件。
    • FORMS+=myfirstwidget.ui:设计师界面。

    ------------------------------------------------------------------------------------------------------------------------------------

    补充:有知友反映直接运行MyFirstWidget.exe会提示缺少动态库的错误。

    解决方法:设置计算机的环境变量Path,计算机=》右键属性=》高级设置=》环境变量=》系统变量=》双击Path,在Path后面增加C:QtQt5.8.05.8mingw53_32in,记得变量与变量之间用分号隔开。

    上面的方法只适用于安装了Qt的电脑,但如果我要在一台没有安装Qt的电脑上也运行程序该怎么办呢,最简单的办法就是运行你的程序,记录程序提示缺少哪个动态库就把这个动态库拷贝到和程序同级的目录下即可,最后连同这些动态库一起发布。

    ------------------------------------------------------------------------

    补充:知友“jokeym”补充,对于Qt程序的发布,可以使用命令 windeployqt就可以完成发布。

    打开windows控制台直接输入 windeployqt --help

    可以知道想要发布程序,直接输入windeployqt 后面加exe文件即可。

    如果你想第一时间看到我的技术分享,就赶快关注吧。

    更多分享请关注微信公众号:小豆君,只要关注,便可加入小豆君为大家创建的C++Qt交流群,方便讨论学习。

    转自知乎:https://zhuanlan.zhihu.com/p/28224035

  • 相关阅读:
    2016工作总结与反思
    JSP 标准标签库(JSTL)
    JQuery遍历CheckBox踩坑记
    JAVA中按照""截取字符串
    file上传图片功能
    List转化为Map
    Map转化为List
    对JAVA的LIST进行排序
    根据制定ID查询信息
    制定查询条数
  • 原文地址:https://www.cnblogs.com/yuemo/p/9033259.html
Copyright © 2020-2023  润新知