Qt全局宏和变量
2015-08-12 15:19
381 查看
qmake 常用命令:
qmake -project //生成pro文件,自动检查c/c++程序文件
qmake -t lib //生产把源码编译成库的pro工程文件
qmake -tp vc //根据pro文件生成vc的工程文件,qt commericial有一个绑定到vs的工具,可以在菜单栏直接打开
qmake -r xxx.pro "CONFIG+=debug" //递归生成makefile
moc //包含Q_OBJECT文件转换器
rcc //Qt resource compiler
uic //Qt ui file translator,to .h file.
Qt 常用宏:
平台相关
Q_WS_WIN //window系统
Q_WS_X11 //xwindow系统
Q_WS_MAC //苹果mac系统
Q_WS_SOL //sun的solaris系统
其它
QT_OPENGL_SUPPORT //是否支援opengl
QT_VERSION //qt的版本,如 if QT_VERSION > 0x040601(qt > 4.6.1)
QT_VERSION_STR //qt版本的字符串
QT_POINTER_SIZE //指针的字节宽度 32bit=4,64bit=8
QT_REQUIRE_VERSION //用在代码中,比如QT_REQUIRE_VERSION(argc, argv, "4.0.2");
global常用函数
T qAbs(const T & value) //返回绝对值
void qCritical(const char * msg, ...) //
void qDebug(const char * msg, ... ) //
void qFatal(const char * msg, ... ) //输出错误信息
qMax(const T & value1,const T & value2 )//
qMin(const T & value1,const T & value2 ) //
pro 文件格式
#: 表示到行尾均为注视,被忽略
include: 可以包含别的文本文件,一般为*pri 例如 #include "../global.pri"
scope{;;}: 预定义 ,如win32{} 表示在win32平台下的定义,其它忽略
win32/unix/linux-g++/linux-g++-64: 平台宏
DESTDIR: 产生目标文件路径
MOC_DIR: moc转换文件路径
RCC_DIR: 资源文件路径
UI_DIR:ui文件转换的路径
LIBEXT: 产生lib的后缀
QMAKE_CFLAGS_DEBUG:
QMAKE_CXXFLAGS_DEBUG:
QMAKE_CFLAGS_RELEASE:
QMAKE_CXXFLAGS_RELEASE:
TEMPLATE: 决定生成makefile采用的模板,
=lib 表示库文件
=app 表示生成可执行文件
=subdirs 表示处理子目录(在下面用SUBDIRS += **来指定那些子目录)
TARGET: 指定目标文件名
Qt+=: 添加额外的模块支持,例如Qt -= QtCore;Qt += network,phonon,xml,thread
DEFINES: 添加额外的宏定义,如win下需要的export等
DEPENDPATH: 添加以来的路径
INCLUDEPATH: 添加头文件包含路径
HEADERS: 需要包含的头文件
SOURCES: 需要包含的源文件
FORMS: 需要包含的ui文件
RESOURCES:需要包含的资源文件
LIBS:依赖库的路径和名称 -L{xxdirxx} -l{xxnamexx}
CONFIG: 添加配置,如warn_on debug_and_release plugin
TRANSLATIONS: 多国语言支持文件
INSTALLS: 要安装的文件
target.path: 安装的路径
#在pro文件支持environment variables和自定义变量
#如sources.file += $$SOURCES $$HEADERS
#sources.path = $$DESTIN_DIR
#INSTALLS += target source
defineReplace(xxx): xxx为变量 ,此函数可以返回一个变量值如:$$xxx()
exists(file1,file2){error()}:检查文件是否存在
1. Qt 全局宏定义
Qt版本号:
QT_VERSION : (major << 16) + (minor << 8) + patch
检测版本号:
QT_VERSION_CHECK(major, minor, patch)((major<<16)|(minor<<8)|(patch))
当使用命名空间时的一些宏定义:
namespace QT_NAMESPACE {} //命名空间定义
# define QT_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name
# define QT_USE_NAMESPACE using namespace ::QT_NAMESPACE;
# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
# define QT_END_NAMESPACE }
# define QT_BEGIN_INCLUDE_NAMESPACE }
# define QT_END_INCLUDE_NAMESPACE namespace QT_NAMESPACE {
# define QT_BEGIN_MOC_NAMESPACE QT_USE_NAMESPACE
# define QT_END_MOC_NAMESPACE
# define QT_FORWARD_DECLARE_CLASS(name) /
QT_BEGIN_NAMESPACE class name; QT_END_NAMESPACE /
using QT_PREPEND_NAMESPACE(name);
# define QT_FORWARD_DECLARE_STRUCT(name) /
QT_BEGIN_NAMESPACE struct name; QT_END_NAMESPACE /
using QT_PREPEND_NAMESPACE(name);
Q_GLOBAL_STATIC(type, name)用于定义一个全局的静态变量(线程安全的).用它来初始化一个对象指针(函数指针).
Q_GLOBAL_STATIC_WITH_ARGS(type, name, arguments):同上,可带参数.
Q_UNUSED():通常用于某个函数的参数,表明该参数未在方法体中使用.
常用数据类型:
qint8, quint8, qint16, quint16, qint32, quint32, qint64, quint64,
qlonglong(=int64), qulonglong(=uint64)
quintptr, qptrdiff, 作为指针是一样大的.如:
sizeof(void *) == sizeof(quintptr)
&& sizeof(void *) == sizeof(qptrdiff)
Qt有用的类型定义:uchar, ushort, uint, ulong
实用内联函数:qAbs(), qRound(), qRound64(), qMin(), qMax(), qBound();
try-catch宏:
#ifdef QT_NO_EXCEPTIONS
# define QT_TRY if (true)
# define QT_CATCH(A) else
# define QT_THROW(A) qt_noop()
# define QT_RETHROW qt_noop()
#else
# define QT_TRY try
# define QT_CATCH(A) catch (A)
# define QT_THROW(A) throw A
# define QT_RETHROW throw
#endif
每个QT_TRY对应一个QT_CATCH,不要在catch语句块中使用异常实例.
调试相关函数:
qDebug(), qWarnig(), qCritical(), Q_ASSERT()
其他一些函数:
该宏用于定义某个类,禁止拷贝
#define Q_DISABLE_COPY(Class) /
Class(const Class &); /
Class &operator=(const Class &);
qgetenv(), qputenv(), qIntCast(double 或float). qsrand(uint seed),
qrand()
2. Qt的内存管理函数
void *qMalloc(size_t size);
void qFree(void *ptr);
void *qRealloc(void *ptr, size_t size);
void *qMallocAligned(size_t size, size_t alignment)
void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize,
size_t alignment)
void qFreeAligned(void *ptr)
void *qMemCopy(void *dest, const void *src, size_t n);
void *qMemSet(void *dest, int c, size_t n);
注: 数组下标为-1的地址对于数组来说是越界访问了,但是这个地址是有意义的.这个地址就是所申请的数组存储空间的首地址的向前偏移一个单位(也就是偏移一个当前数组类型所对应的字节数)所对应的地址。这个地址由于没有跟着数组空间一起初始化,所以其中的数据是不确定的.如果是正在被系统或者其他应用程序使用中的地址空间,那么可以被访问,其中的数据的意义取决于被系统或者其他应用程序所写入的数据,但是访问后,有可能会引起系统或者其他应用程序异常。如果是没有被使用的地址,那么就是一个野地址,那么其中的数据是随机的,无意义的
3. 环境变量设置函数
qputenv():与putenv()基本类似,由于VC2005后废除了putenv()函数,所有定义了此函数,在VC环境中调用替代的函数,其他平台调用标准C库函数putenv().
qgetenv():获取某个环境变量的值.
4.自定义输出函数
QtMsgHandler qInstallMsgHandler(QtMsgHandler h)
其中:typedef void (*QtMsgHandler)(QtMsgType, const char *);
利用该函数可定制自己的调试信息输出.
5. 断言
Q_ASSERT(bool test):当断言失败时,打印出警告信息,包含了源码文件名和行号.
void Q_ASSERT_X(bool test, const char *where, const char *what)
void Q_CHECK_PTR(void *pointer):检测非法指针,如果指针为0,打印警告信息.
6.系统信息类QsysInfo
相关文章推荐
- QT小技巧
- 进阶~Qt程序启动画面
- Qt零基础教程(四) QWidget详解篇
- 在qt中碰到了suze
- 《转》Qt 经典出错信息之”Basic XLib functionality test failed!”(Z..z..)
- Qt 图片缩放
- Qt之日常积累
- Qt 5.x 中文翻译缺失的一种解决办法
- Qt打开外部程序的三种方法(两种阻塞,一种不阻塞)
- 基于QT-widget的电子词典实现
- Qt5.5.0+VS2013+win64配置
- Qt浅谈之三十二二维码条形码解析
- qt 插件开发
- 基于qt和mplayer的影音播放器
- Qt 5.3 下OpenCV 2.4.11 开发(15)滤波函数
- QSqlTableModel和QTableView设置复选框
- QT显示图片
- Qt dxlib 调用与简单应用
- mousebutton和mousebuttons使用的区别
- 转载:pyqt线程间通过 信号/槽 通信