- 浏览: 236282 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wahahachuang8:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
服务器推送技术 java -
mahuanjian:
[flash=200,200][/flash]
服务器推送技术 java -
wenjundiandian:
下面有网页编辑器的话还是会被隐藏.
ext中消息框、提示框、确认框显示在最前面的解决方法 -
天塔上的猫:
/**
* JAVA常见的权限控制算法的实现
*
* ...
JAVA常见的权限控制算法的实现
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
来源:http://www.cppblog.com/lauer3912/archive/2011/07/26/151837.html
发表评论
-
qtwebkit中js事件的正确写法。
2012-08-15 09:50 971<script language="JavaS ... -
qtwebkit截图
2012-08-13 13:29 800QSize size = m_view->page()- ... -
Qt 中一些常用类的中文说明
2012-02-22 23:39 1072作者:丁冬,华清远见嵌 ... -
输入法
2012-01-04 18:00 0http://civilnet.cn/syszux/syszu ... -
QT启动前有绿屏怎么处理
2012-01-04 09:49 1249笑看人生pual(13290889) 16:32:27QT启动 ... -
QT实现截取屏幕
2012-01-04 09:48 1192本文阐述了一个在Qtopia下截取屏幕的方法,实际上Qtopi ... -
在QT中通过摄像头动态显示图片 .
2012-01-04 09:49 1916Camgui::Camgui(QWidget *parent, ... -
脚本打包大量文件学习
2011-12-19 09:33 773TARGET_DIR=$PWDcd /list=`cat &l ... -
QT 同时支持鼠标和触摸屏
2011-12-17 12:36 1651现在 如果我要使用鼠标导入环境变量export QWS_M ... -
Qt中Qstring,char,int,QByteArray之间到转换
2011-12-17 12:31 1142各种数据类型的相互转换char * 与 const char ... -
QT Creator的style sheet的几种用法(QT Creator)(StyleSheet)(样式)(QT4.7)(用法)
2011-12-10 20:16 1851摘要: QT Create中,对butt ... -
QT学习笔记(QT4.7)(笔记)
2011-12-10 20:16 1884摘要: 由于 ... -
QT 4.7支持中文(QT4.7)(中文)(makeqpf)
2011-12-10 20:16 2030摘要: QT4.7.0在移植到开发板上的 ... -
QImage变暗
2011-12-16 14:50 1078_image = QPixmap::grabWindow ... -
Qt/Embedded动态旋转屏幕
2011-12-10 20:16 1099距离上次发博文已经有 ... -
如何在QT下执行shell或外部程序
2011-12-10 20:17 1987摘要: 通常,我们运行shell程序都是在终端里进行的, ... -
linux嵌入式qt的屏幕旋转与字体大小问题
2011-12-16 14:50 2379【1、与qt程序显示文字大小有关的两项】 export ... -
改变QMessageBox的大小
2011-12-16 14:50 1005创建一个QMessageBox: QMessageBox m ... -
QT坐标变换
2011-12-09 09:18 1039------------------------------ ... -
QT画对话框窗口圆角
2011-12-09 09:16 1544QPainterPath path; QRectF rec ...
相关推荐
### 方法二:创建类来存储全局变量和函数(使用`static`关键字) 这是更推荐的方法,因为它允许更好的封装和管理。下面是如何实现的: 1. 在一个头文件(例如`temp.h`)中定义一个类,并在类中声明静态成员变量: ...
定义一个结构体,里面包含你要公共使用的变量. 然后在主程序 new一个这个结构体的指针. 然后在每个界面类里定义一个这个结构体的指针. 然后在界面初始化时将你那个new出来的指针传递进界面. 这样每个界面都可以访问...
总的来说,通过理解和熟练运用全局变量以及double和字符串之间的转换,你可以在Ubuntu 14.04上的QT环境中有效地开发出功能丰富的计算器应用。不过,一定要注意良好的编程实践,如限制全局变量的使用,保持代码清晰和...
除了全局变量和函数调用,QT的信号与槽机制是另一种强大的跨对象通信方式。它允许对象之间异步地传递消息。当你在一个对象中触发一个信号时,与之相连的槽函数会在适当的时机被调用。例如: ```cpp // sender.h ...
标题"Qt 多线程访问同一个变量"涉及到的是如何在多线程环境下确保对共享资源(此处为一个全局变量)的安全访问。描述中提到了使用互斥锁来解决这个问题,并通过创建两个线程ThreadA和ThreadB来演示这一过程。 首先...
在A中定义有全局变量X(或类的静态成员变量),则在动态库B中访问的X,与可执行程序C中访问的X是同一个变量还是两个不同的变量? 答案:是两个不同的变量。 2. 工程中包含动态库A,动态库B,可执行程序C。C依赖于A和...
然而,多线程编程也带来了一些挑战,尤其是当多个线程同时访问共享资源,如全局变量时,可能会出现竞态条件(Race Condition)和其他并发问题。本文将深入探讨标题“多线程同时操作全局变量的出错演示”所涉及的知识...
即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的。 Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容。Qt线程间共享数据主要有两种方式...
Qt连接mysql数据库,全局变量定义db
在QT编程环境中,我们经常需要实现各种用户界面(UI)元素来增强应用的交互性和视觉效果。"Qt画圆可以代替指示灯"这个标题揭示了一个巧妙的方法,即利用QT库的功能来绘制圆形图形,以此模拟指示灯的效果。这种方式...
本文将深入探讨Qt窗体间传递数据的三种主要模型:信号与槽机制、全局变量和属性绑定。 一、信号与槽机制 Qt的核心特性之一就是信号与槽机制,它是多线程和异步编程的基础。当一个对象的某个状态改变时,它可以发射...
QT多线程处理+全局变量处理异步事件并获取多个线程返回的结果
1.把log.h 和 log.cpp放到程序里进去 2.log_open("./XXX.log") [这一步会自动新建到这个路径下的txt,会输入到这个文本中] 3.打印输出日志log_debug(""); [这个是需要是想输出变量值,QString需要转成char*类型] 例如...
- 编写源代码,定义接口和实现,确保遵循DLL接口设计原则,避免使用全局变量和静态初始化。 - 构建项目,生成.dll文件。 2. 创建MFC DLL: - 使用Visual Studio创建一个新的MFC动态库项目。 - 在类视图中添加...
静态全局变量 `buttontext` 是一个字符数组,用于存储计算器按键的文本信息。该数组包含了计算器所有按键的名称和符号。 3. 构造函数 构造函数 `CWidget(QWidget *parent, char *name)` 是计算器的构造函数,用于...
4. **配置环境变量**:安装完成后,为了能够在终端中全局使用QT的相关命令,需要更新`PATH`环境变量。打开或创建`~/.bashrc`文件,并添加以下行: ``` export PATH=$PATH:/path/to/your/qt/installation/bin ``` ...
此外,你还可以设置Qt的全局环境变量,使得在命令行中可以直接使用qmake等工具。 4. 安装过程:点击“下一步”开始安装,这个过程可能需要几分钟到几十分钟不等,取决于你的网络速度和计算机性能。 5. 完成安装:...
1. **Qt Script基础**:理解Qt Script的基础语法,如变量声明、数据类型、控制流结构、函数定义等,这与标准的JavaScript语法基本一致,但有一些Qt特有的扩展,如全局对象QScriptEngine和QScriptContext。...
- **临时交换目录**:定义为宏形式,如`./temp/`,避免使用固定的目录名,例如`./tmp/`(该目录名在某些Qt for Windows版本中有特殊意义)。 ##### 3. 工程文件命名原则 - **工程文件命名**:工程文件(`.pro`)...