QtCreator
2014年9月10日
2014年9月27日添加SVN
2014年10月21日增加加载CDB调试速度
QtCreator不支持中文和带空格的路径,使用前要注意。
对于带空格的路径,使用$$quote(path)。
路径符号使用/或者\\。
在函数名称之前使用/**则自动生成Doxygen注释。
配置:工具-》选项-》版本控制-》SVN:输入svn.exe的文件路径和用户名、密码。
提交:工具-》SVN下有所有命令。
参考:http://blog.csdn.net/superjoel/article/details/5314225
从QT官网上下载预编译的64QT安装文件(注意与本地的VC版本对应)。
下载CDB(32位也可以调试64位的程序,但是个别情况下需要64位的调试器,微软的官网无法下载了(不知道为何),CSDN可以下载,下载地址:)。
代表界面布局。
使用ui文件来进行可视化布局。布局完成后编译,生成ui_xx.h文件,这个文件中包含类:
1) UI_XX:表明是某个mainwindow的UI文件,所有数据将以此对象为父对象。
2) namespace Ui::XX:这是个外壳类,供外部使用。
UI_XX类中包含所有的控件及setupUI(yourWindow),retranslateUI()。setupUI()将以为指定的对象生成可视化布局的内容。retranaslateUI()将对编码进行转换。
注意:由于setupUI()使用ui的基类作为构造函数,所以使用ui的窗口处理类应该派生于ui基类。
使用UI时,只要将外壳类添加到声明,并将ui_xx.h头文件包含在要使用的cpp文件中,然后生成其对象,调用setupUI(this),就可以将ui内容在本对象中生成一份。
qrc文件用于指定资源的位置和名称。是一个xml文件,用于其它文件对资源的使用,目的是使用资源独立化。
使用rcc编译为二进制之后,变化rcc文件。
可以使用别名来指定真实资源的引用名称。
前缀/路径:就是路径,前缀专指顶级目录,一般用资源类型指定,标明其类型,路径就是在此类型下的路径,仅是代表一种关系,并没有真实的路径。
别名:被直接引用的名字称为别名,默认与实现路径相同,但是一般应该修改为简单的名称,便于引用,并与实际位置独立。
使用时其位置为(:前缀/路径/别名)。
例如:
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>
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 属性 位置
可以在QtCreator中直接使用资源编辑器或文本编辑器编辑。也可以使用QtDesigner进行编辑。
参考:http://blog.sina.com.cn/s/blog_4b9ee9e501010mtn.html
http://blog.csdn.net/bzhxuexi/article/details/10260537
可以在项目中设置构建目录设置输出目录。
是一个专门为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
在linux/unix上用于自动进行编译的工具,是一系统shell命令的集合,能够自动检测变化,并以此为依据进行更新编译。
用于进行项目管理的文件。用于qmake生成makefile文件。
包含了项目的名称、类型、依赖的库等所有信息。
另外,还自动生成一个当前系统信息的xml文件pro.user文件。
注意:
不支持中文和带空格的路径,使用前要注意。
对于带空格的路径,使用$$quote(path)。
路径符号使用/。
多个值时,使用空格分开,如果需要换行,则使用\。
可以检测或简单的逻辑,
参考http://my.oschina.net/laopiao/blog/87160
KEY += setset set
换行使用\
注释:#。
编码类型: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
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\:所有头文件路径。注意:以\结束(也可省略)。
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
删除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
qDebug(),qWarning(),qFatal()均为全局函数。
qDebug(),qWarning():用法相同,但代表不同的级别。
qFatal():调用后会在显示信号后退出。
QDebug:#include <QDebug>
可以使用qDebug()函数直接输出。
使用printf()样式的格式化输出或使用<<样式的流输出。
<QtGlobal>
Q_ASSERT():如果为FALSE,则中断并显示调试信息。
Q_CHECK_PTR():检查指针,如果为空,则调用qFatal()。
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
在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
参考:..\CPP\内存泄漏检测.docx
使用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