QtCreator 使用介绍

QtCreator

[email protected]

2014年9月10日

2014年9月27日添加SVN

2014年10月21日增加加载CDB调试速度

 

1 概述

QtCreator不支持中文和带空格的路径,使用前要注意。

对于带空格的路径,使用$$quote(path)。

路径符号使用/或者\\。

在函数名称之前使用/**则自动生成Doxygen注释。

1.1 SVN

配置:工具-》选项-》版本控制-》SVN:输入svn.exe的文件路径和用户名、密码。

提交:工具-》SVN下有所有命令。

参考:http://blog.csdn.net/superjoel/article/details/5314225

1.2 64位QT的配置

从QT官网上下载预编译的64QT安装文件(注意与本地的VC版本对应)。

下载CDB(32位也可以调试64位的程序,但是个别情况下需要64位的调试器,微软的官网无法下载了(不知道为何),CSDN可以下载,下载地址:)。

2 UI文件

代表界面布局。

2.1 UI原理

使用ui文件来进行可视化布局。布局完成后编译,生成ui_xx.h文件,这个文件中包含类:

1)   UI_XX:表明是某个mainwindow的UI文件,所有数据将以此对象为父对象。

2)   namespace Ui::XX:这是个外壳类,供外部使用。

UI_XX类中包含所有的控件及setupUI(yourWindow),retranslateUI()。setupUI()将以为指定的对象生成可视化布局的内容。retranaslateUI()将对编码进行转换。

注意:由于setupUI()使用ui的基类作为构造函数,所以使用ui的窗口处理类应该派生于ui基类。

2.2 UI使用

使用UI时,只要将外壳类添加到声明,并将ui_xx.h头文件包含在要使用的cpp文件中,然后生成其对象,调用setupUI(this),就可以将ui内容在本对象中生成一份。

3 资源文件RCC和QRC

qrc文件用于指定资源的位置和名称。是一个xml文件,用于其它文件对资源的使用,目的是使用资源独立化。

使用rcc编译为二进制之后,变化rcc文件。

可以使用别名来指定真实资源的引用名称。

3.1 术语

前缀/路径:就是路径,前缀专指顶级目录,一般用资源类型指定,标明其类型,路径就是在此类型下的路径,仅是代表一种关系,并没有真实的路径。

别名:被直接引用的名字称为别名,默认与实现路径相同,但是一般应该修改为简单的名称,便于引用,并与实际位置独立。

3.2 使用方法

使用时其位置为(:前缀/路径/别名)。

例如:

icon.addFile(QStringLiteral(":/image/myimage/uninstallxx.ico"), QSize(),QIcon::Normal, QIcon::Off);

而其实际的qrc文件为

<RCC>
    <qresourceprefix="/image/myimage">
        <filealias="uninstallxx.ico">xx0/xdfd/uninstall.ico</file>
    </qresource>
</RCC>

3.3 编译

1)   可以手动使用rcc工具编译(不推荐):

            rcc -binary myresource.qrc -o myresource.rcc

手动编译完成后,要手动进行注册,才后使用:

            QResource::registerResource("/path/to/myresource.rcc");

2)   但更简便的方法是加入到pro文件中,由qmake自动编译、注册。

资源:RC_FILE += xx.rc

rc格式:ID TYPE 属性 位置

3.4 编辑

可以在QtCreator中直接使用资源编辑器或文本编辑器编辑。也可以使用QtDesigner进行编辑。

 

参考:http://blog.sina.com.cn/s/blog_4b9ee9e501010mtn.html

http://blog.csdn.net/bzhxuexi/article/details/10260537

 

4 编译和链接

可以在项目中设置构建目录设置输出目录。

4.1 qmake

是一个专门为QT开发的,用于生成makefile文件的工具,可以用来生成各种平台上的各种工程文件。

默认为直接包含qt的库。如果不使用qt库,则CONFIG -= qt。

qmake 使用.pro为输入文件,然后生成makefile,例如:

qmake –oout.makefile test.pro

参考:http://zh.wikipedia.org/zh-cn/Qmake

http://lifegoo.pluskid.org/wiki/QMake.html

4.1.1makefile 和make工具

在linux/unix上用于自动进行编译的工具,是一系统shell命令的集合,能够自动检测变化,并以此为依据进行更新编译。

 

4.2 PRO文件

用于进行项目管理的文件。用于qmake生成makefile文件。

包含了项目的名称、类型、依赖的库等所有信息。

另外,还自动生成一个当前系统信息的xml文件pro.user文件。

注意:

不支持中文和带空格的路径,使用前要注意。

对于带空格的路径,使用$$quote(path)

路径符号使用/

多个值时,使用空格分开,如果需要换行,则使用\

可以检测或简单的逻辑

参考http://my.oschina.net/laopiao/blog/87160

 

4.2.1格式

    KEY += setset set

换行使用\

4.2.2语法

注释:#。

编码类型:CODECFORSRC

项目类型:TEMPLATE

配置信息:CONFIG

头文件:HEADERS

源文件:SOURCES

目标文件名称:TARGET

目标文件路径:DESTDIR

库头文件:INCLUDEPATH

库文件:LIBS

库目录文件:LIBS += -LPATH用于添加.lib所在路径或依赖dll所在非运行目录的目录。

不同编译方式的LIBS配置:

                                        Release:LIBS+=-LPath

                                        Debug:LIBS+=-LPath

库文件:LIBS += -lfilename 或者LIBS += filename.lib

资源文件qrc:RESOURCES

rcc临时目录:RCC_DIR

rcc文件:RC_FILE

UI文件目录:UI_DIR

UI文件:FORMS

moc文件临时目录:MOC_DIR

object文件临时目录:OBJECTS_DIR

QTS库:QT

平台专用:win32{pro数据}

宏定义:DEFINES

参考:http://blog.csdn.net/alspwx/article/details/12649225

http://blog.csdn.net/adriano119/article/details/5878169

 

4.2.3关键字

1)       QT

QT += core gui …包含QT的模块。core是qt的核心模块,所有与QT有关的程序都要使用,gui是界面模块,其它模块查看帮助,按需添加。

默认自动添加core模块。

QT += core:将包含$(QTDIR)/include/QtCore,加入$(DTDDIR)/lib/qtcore4.lib,定义QT_CORE_LIB。

2)       CONFIG

加入编译选项。

可以选择加入的qt模块,输出的警告信息,release或者debug编译等。

默认包含qt。

3)       TEMPLATE

模板,表示项目将输出什么类型的文件。

app:输出可执行文件的makefile,如exe

lib:输出库文件的makefile

vcapp:输出可执行文件的vs工程文件

vclib:输出库文件的vs工程文件

subdirs:子工程目录的makefile文件

 

4)       取环境变量$$

$${a}:环境变量a的字符串。

$$(PATH):环境变量PATH的路径。

5)       其它

TARGET = name:生成文件名称,默认是项目名称。

TEMPLATE = app:当前项目模板为app模板,生成exe。

SOURCES += xx.cpp:所有源文件。

HEADERS += xx.h:所有头文件。

FORMS += xx.ui:所有UI文件。

LIBS += xx.lib:所有lib文件,以及非运行目录的dll文件目录

INCLUDEPATH+=xx\:所有头文件路径。注意:以\结束(也可省略)。

4.2.4检测当前编译环境

CONFIG(condition,con0|con1…):检测当前的condition,从con列表中唯一选择。

示例:

#addlibbydebugmode
CONFIG(release,debug|release){#releaselibs
    LIBS+=-LD:/Test/cpp/sharedm/Release\
            -L../build-vectoranalysis-release/release
    message("release")
}else{#Debuglibs
    LIBS+=-LD:/Test/cpp/sharedm/Debug\
            -L../build-vectoranalysis-debug/debug
    message("debug")

}

参考:http://hi.baidu.com/dbzhang800/item/759aa224fc1140c9a4275a41

5 调试

5.1 提高CDB速度

删除Srv*......行,只保留cache行。

CDB通过Cache来读取本地缓存的调试信息,或者从Internet下载调试信息(srv)。由于Srv在国内不通还是什么别的原因(不知道为什么),下载过程会特别慢。所以这里禁用这个命令,只从本地获取。

参考:http://qt-project.org/forums/viewthread/29259

http://msdn.microsoft.com/en-us/library/windows/hardware/ff558829(v=vs.85).aspx

5.2 输出调试信息

qDebug(),qWarning(),qFatal()均为全局函数。

qDebug(),qWarning():用法相同,但代表不同的级别。

qFatal():调用后会在显示信号后退出。

5.2.1iostream格式的qDebug()

QDebug:#include <QDebug>

可以使用qDebug()函数直接输出。

使用printf()样式的格式化输出或使用<<样式的流输出。

 

5.3 断言和指针检查

<QtGlobal>

Q_ASSERT():如果为FALSE,则中断并显示调试信息。

Q_CHECK_PTR():检查指针,如果为空,则调用qFatal()。

5.4 宏

5.4.1当前的编译模式:debug/release

release下定义QT_NO_DEBUG,debug下不定义宏,所以在判断时应该使用QT_NO_DEBUG测试。

如:

#ifndefQT_NO_DEBUG
        QMessageBoxmsg;
        msg.setText(strResult);
        msg.exec();

#endif

参考:https://qt.gitorious.org/qt/max-qt-clone/commit/3f1f021

6 内存泄漏检测

6.1 使用vld,可以在debug模式下检测。

在Pro文件中加入:

win32{
    CONFIG(debug,debug|release){
        DEFINES+=_DEBUG
        #vld2.2downloadedfromhttp://vld.codeplex.com/
        VLD_PATH=$$quote(D:/ProgramFiles(x86)/VisualLeakDetector)
        INCLUDEPATH+=$$quote(D:/ProgramFiles(x86)/VisualLeakDetector/include)
        LIBS+=-L$$quote(D:/ProgramFiles(x86)/VisualLeakDetector/lib/win32)-lvld
    }

}

在main文件中加入

#ifdef _DEBUG

#include "vld.h"

#endif

参考:http://blog.csdn.net/dyw/article/details/6860473

6.2 使用vc时,可以使用VC的内存泄漏检测方法

参考:..\CPP\内存泄漏检测.docx

7 发布

使用dependents walker(depends.exe)(vc6和vc2003自身带有这个工具,但之后的vc版本不带,可以自由下载,是免费软件)可以检测程序的依赖项,然后复制到同一个目录下,作为NSIS安装使用。

NSIS:nullsoft scriptable install system。免费的win32安装、卸载程序。

HM NSIS EDIT:NSIS的IDE工具。

在HM NSIS EDIT的向导中,创建NSIS脚本,并编译,然后,就可以进行安装、卸载。

参考:

http://blog.sina.com.cn/s/blog_a6fb6cc90101fer8.html

 

你可能感兴趣的:(开发,qt,应用)