技术探讨
sdsunxj
一个程序员
展开
-
QT的Graphics View柜架
Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放。这个柜架也包含一个事件传播结构,对于在scene中的这些items,它具有双精度的交互能力。Items能处理键盘事件,鼠标的按,移动、释放、双击事件,也可以跟踪鼠标移动。GraphicsView使用转载 2009-08-05 08:57:00 · 1114 阅读 · 0 评论 -
读Chrome源码剖析
chrome就不用给大家介绍了,前几天读一位兄台对他源码剖析的文章,自己也就拿来看了些,实在是水平有限,没有深入进去。 只能说按自己的理解和兄台的文章,说说自己的感受了,在chrome真正让我有所感悟的是他的多线程的处理,很长一段时间来,自己在写多线程的程序,后来把代码的维护工作交给了另外的同事,结果程序经常出现死锁现象,俺不得不又去看看,并提出了一些注意点,再后来随着系统通信量的增加,锁带原创 2009-08-12 08:33:00 · 608 阅读 · 0 评论 -
关于QString使用的一点体会
早就听说QString是非线程安全的,以前在使用过程中也没有过多的体会,下面介绍一下自己的使用过程。使用环境:两个程序进行通信,首先,程序A向程序发送一组请求,程序B接收到请求后,组织数据,然后发回程序A,程序A通过另一个线程(回调线程)接收程序B的数据并进行处理。QString的使用:在程序A中使用了QString作为发向程序B的一组数据中每个数据的标示,并且以指针的方式记录在发送缓冲区原创 2010-02-01 15:17:00 · 1473 阅读 · 0 评论 -
跨平台编程的字符集问题
在编程过程中,如果需要在终端(命令行、对话框)打印出汉字,那么就要在application类中设置字符集,而且还需要调用QObject::tr()进行转换。否则程序中汉字会显示为乱码。例子:#include // 必要#include // 必要 int main(int argc,char* argv[]){#ifdef LINUX原创 2010-02-02 19:02:00 · 885 阅读 · 0 评论 -
关于QMatrix
QPainter预设的座标系统是绘图装置的座标系统,也就是左上角为原点,向右为正X,向下为正Y的座标系统,座标系统的转换常使用矩阵的方式来表现及进行运算, QMatrix的作用,正是让您可以利用其内建的矩阵,设定好相关的参数,然后让QPainter根据QMatrix的设定,来进行一些二维座标系统的转换动作。QMatrix的内部使用一个3x3的矩阵: m11转载 2010-02-03 19:56:00 · 9628 阅读 · 0 评论 -
动态库链接的问题
在进行编程时,该程序调用mysql的一个动态库,在链接时出现下面的问题: LIBCMT.lib(sprintf.obj) : error LNK2005: _sprintf_s已经在 msvcrtd.lib(MSVCR80D.dll) 中定义等一堆的错误网上查到两种解决方法:1.运行时库现在包含可防止混合不同类型的指令。如果试图在同一个程序中使用不同类型的运行时库或使用调试和非原创 2010-02-25 11:18:00 · 750 阅读 · 0 评论 -
google protobuf 源码解析
<br /><br />Message抽象层,记录了一个proto文件里的所有内容<br /> <br />MessageLite:轻量级的接口协议<br />这个接口由所有协议的消息对象来实现。一个MessageLite子类的子类实现了它的接口。当您使用MessageLite而只需要它的接口子集 - 即没有使用descriptors或reflection。你可以使编译器生成的类协议而只实现MessageLite的部分接口,只需在.proto文件中增加如下内容:<br />option optimize_f原创 2010-06-06 15:12:00 · 6159 阅读 · 0 评论