#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()
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的地址对于数组来说是越界访问了,但是这个地址是有意义的.这个地址就是所申请的数组存储空间的首地址的向前偏移一个单位(也就是偏移一个当前数组类型所对应的字节数)所对应的地址。这个地址由于没有跟着数组空间一起初始化,所以其中的数据是不确定的.如果是正在被系统或者其他应用程序使用中的地址空间,那么可以被访问,其中的数据的意义取决于被系统或者其他应用程序所写入的数据,但是访问后,有可能会引起系统或者其他应用程序异常。如果是没有被使用的地址,那么就是一个野地址,那么其中的数据是随机的,无意义的
qputenv():与putenv()基本类似,由于VC2005后废除了putenv()函数,所有定义了此函数,在VC环境中调用替代的函数,其他平台调用标准C库函数putenv().
qputenv(const char *varName, const QByteArray& value);
qgetenv():获取某个环境变量的值.
QtMsgHandler qInstallMsgHandler(QtMsgHandler h)
其中:typedef void (*QtMsgHandler)(QtMsgType, const char *);
利用该函数可定制自己的调试信息输出.
Q_ASSERT(bool test):当断言失败时,打印出警告信息,包含了源码文件名和行号.
void Q_ASSERT_X(bool test, const char *where, const char *what)
void Q_CHECK_PTR(void *pointer):检测非法指针,如果指针为0,打印警告信息
此函数在使用Qt消息处理程序之前已定义。返回一个指向前一个消息处理程序。
消息处理程序是一个函数,用于打印qDebug,qWarning,qCritical和qFatal的错误消息。Qt库(调试模块)包含成百上千的警告信息,打印时(通常是无效的函数参数)发生内部错误。Qt构建在release模式下还包含一些除了QT_NO_WARNING_OUTPUT和/或QT_NO_DEBUG_OUTPUT之外的警告已经设置在编译。如果你实现自己的消息处理程序,需要完全控制这些消息。
只有一个消息处理程序可以被定义,因为这通常是在应用程序的基础上完成控制调试输出。
恢复消息处理程序,调用qInstallMessageHandler(0)。
Qt 之 qInstallMessageHandler(输出详细日志)
https://blog.csdn.net/liang19890820/article/details/51838096
Qt 之 qInstallMessageHandler(重定向至文件)
https://blog.csdn.net/liang19890820/article/details/51838379
枚举名 | 值 | 详解 |
---|---|---|
Qt::AA_DontShowIconsInMenus | 2 | |
Qt::AA_DontShowShortcutsInContextMenus | 28 | |
Qt::AA_NativeWindows | 3 | |
Qt::AA_DontCreateNativeWidgetSiblings | 4 | |
Qt::AA_PluginApplication | 5 | |
Qt::AA_DontUseNativeMenuBar | 6 | |
Qt::AA_MacDontSwapCtrlAndMeta | 7 | |
Qt::AA_Use96Dpi | 8 | |
Qt::AA_SynthesizeTouchForUnhandledMouseEvents | 11 | |
Qt::AA_SynthesizeMouseForUnhandledTouchEvents | 12 | |
Qt::AA_UseHighDpiPixmaps | 13 | |
Qt::AA_ForceRasterWidgets | 14 | |
Qt::AA_UseDesktopOpenGL | 15 | |
Qt::AA_UseOpenGLES | 16 | |
Qt::AA_UseSoftwareOpenGL | 17 | |
Qt::AA_ShareOpenGLContexts | 18 | |
Qt::AA_SetPalette | 19 | |
Qt::AA_EnableHighDpiScaling | 20 | |
Qt::AA_DisableHighDpiScaling | 21 | |
Qt::AA_UseStyleSheetPropagationInWidgetStyles | 22 | |
Qt::AA_DontUseNativeDialogs | 23 | |
Qt::AA_SynthesizeMouseForUnhandledTabletEvents | 24 | |
Qt::AA_CompressHighFrequencyEvents | 25 | |
Qt::AA_CompressTabletEvents | 29 | |
Qt::AA_DontCheckOpenGLContextThreadAffinity | 26 | |
Qt::AA_DisableShaderDiskCache | 27 | |
Qt::AA_DisableWindowContextHelpButton | 30 |
返回包含应用程序可执行文件的目录。
例如,如果您已在C:\ Qt目录中安装了Qt,并且运行了regexp示例,则此函数将返回“C:/ Qt / examples / tools / regexp”。
在macOS和iOS上,这将指向实际包含可执行文件的目录,该目录可能位于应用程序包内(如果应用程序是捆绑的)。
警告:在Linux上,此函数将尝试从/ proc文件系统获取路径。 如果失败,则假定argv [0]包含可执行文件的绝对文件名。 该函数还假定应用程序未更改当前目录。
注:本文为工作时在网上看到的,当时做的笔记,如果涉及抄袭,请联系本人删除