• Qt学习笔记


    1. qmake编译程序,qmake是qt提供的一个编译打包工具。用于跨平台编译。

      1.1 qmake编译Pro生成makefile 

      1.2 jom或者make编译makefile

        1.2.1生成界面源码 xml头文件,uic.exe  uic.exe widget.ui -o ui_widget.h   -->>界面出错

        1.2.2生产信号槽代码,moc.exe widget.h moc_widget.cpp   -->>Qobject

    2. 从代码到程序执行经历的步骤

      2.1 预处理:每一个文件单独预处理,头文件加载和宏生成cpp

      2.2 编译:单个cpp到.o或.obj,项目中多少个cpp就会生成多少个obj。两个cpp中定义了同名变量,不会出错,因为编译时是相互独立的

      2.3 链接:so lib o obj res a,分静态链接(把所有函数完全复制到exe中,比较慢)和动态链接(复制的不是函数本身,而是函数的地址,快)。 把所有obj链接成一个文件。

      2.4 执行:exe dll so(.h和dll和lib要一一对应)lib中定义的是函数的地址,到dll中找对应的函数

    3. 手动创建pro到生成Debug exe

      3.1 在纯英文路径下新建003_testqmake文件夹,创建pro文件"testqmake.pro" 和"main.cpp"和"make.bat"

      testmake.pro        SOURCES是导入用到的源码,多个文件源码用分割;CONFIG是配置文件

    SOURCES += main.cpp 
    person.h
    person.cpp
    CONFIG
    += console

      main.cpp 

    #include <iostream>
    using namespace std;
    
    int main()
    {
        cout<<"Hello World"<<endl;
        return 0;
    }

      make.bat(统一写入的批处理文件)

    call "D:VS2015ProVCvcvarsall.bat"
    qmake -o makefile testqmake.pro
    jom /f makefile.Debug
    pause

      3.2 配置qmake和jom执行路径

      VS的编译批处理文件:D:VS2015ProVCvcvarsall.bat  VS安装目录下的VC文件夹的vcvarsall.bat文件

      通过cmd控制台操作,不用cmd控制台操作,直接双击make.bat也可实现相同的功能

       3.3 导入VS开发环境 

      qmake -tp vc testqmake.pro

      使用vs工具导入:Qt VS Tools下Open Qt Project File(.pro)

    4. qmake引入qt库创建窗口

    Pro中:
    QT += widgets
    
    main中:
    #include <iostream>
    #include <QWidget>
    #include <QApplication>
    using namespace std;
    
    int main(int argc,char *argv[])
    {
        QApplication a(argc,argv);
        QWidget w;
        w.show();
        cout<<"Hello World"    <<endl;
        a.exec();  //这是个循环,是阻塞式的,直到程序运行结束,才会运行到下一行
        return 0;
    }
    QT += widgets

    5. 头文件路径

    INCLUDEPATH += ../..include  //相对路径针对输出路径
    INCLUDEPATH += $$PWD/../../include  //$$PWD

       include与src同级别目录,MakefFil文件所在的文件夹如果在src目录下,这样从MakeFile到src到include是/../../;如果MakeFile文件所在的文件夹与src、也就是include同目录,就是/../。

    6. 库引用和库路径指定

      LIBS += -L"../../lib" -lopencv_world320
      linux下 libopencv_world320.so
      window下 opencv_world320.lib

  • 相关阅读:
    ResponsibleChain(责任链模式)
    IteratorPattern(迭代子模式)
    为什么抽象类不能实例化却有构造方法
    ObserverPattern(观察者模式)
    TemplateMethod(模块方法模式)
    java 定义一个同步map内存去重法
    oracle sql修改序列为当前序列开始
    oracle sql 当初始化数据时避免重复主键
    搭建基于express框架运行环境
    vue路由基础介绍
  • 原文地址:https://www.cnblogs.com/yangmengke2018/p/13998494.html
Copyright © 2020-2023  润新知