最新代码请到 github: https://github.com/luyikk/ZYSOCKET 更新 4.3.5更新说明: 修复各种BUG。 重写了一份 protobuf-net 有什么用呢,不需要添加 protobuf标签了。值得注意的是 加了标签的类 里面的属性 都需要加,不加标签的 什么标 Read More
posted @ 2016-02-01 22:12 findumars Views(802) Comments(0) Diggs(0)
注:此文是站在Qt5的角度说的,对于Qt4部分是不适用的。 1.先说Qt信号槽的几种连接方式和执行方式。 1)Qt信号槽给出了五种连接方式: Qt::AutoConnection 0 自动连接:默认的方式。信号发出的线程和糟的对象在一个线程的时候相当于:DirectConnection, 如果是在不 Read More
posted @ 2016-02-01 22:07 findumars Views(21209) Comments(1) Diggs(0)
前写程序最多也只是字节级别操作,用char和memcpy进行一系列内存操作。此次一个sdk,其状态值直接是每位一个标示,所以需要取出每位进行操作。当然CPP也有丰富的位运算操作,但是虽然也学过,知道意思,但是实际却几乎没用过。这次只能动用它了。 第一种方法:思路就是全部用位与,这样就能取出来每一位是 Read More
posted @ 2016-02-01 22:05 findumars Views(4999) Comments(0) Diggs(0)
文/Foruok 2015年11月25日早上,我宣布解散团队,结束了我的创业之旅。 内心的各种不舍、纠结、怅惘、愧疚、惆怅,让我在聊天的过程中忍不住落下泪来,这是我不曾想到的。在写到这里时,忽然就想起汪峰的那首歌——当我想你的时候——里面的一句歌词,“至少有十年我不曾流泪”。然而不管怎样向前伸出挽回 Read More
posted @ 2016-02-01 21:55 findumars Views(2295) Comments(3) Diggs(0)
博客分类: Dot net VC2008 DLL Dot net 生成、使用DLL看起来简单,但做起来才发现还是有一些地方需要注意的。 1. 打开VS2008,新建一个VC工程,选择Win32类型,Win32项目: 2. 应用程序类型选择DLL,附加选项选择到处符号,公共头文件不要选择,然后点完成即 Read More
posted @ 2016-02-01 21:04 findumars Views(979) Comments(0) Diggs(0)
一、简介 博客中发现有作者写的仿360的代码,觉得其中图片滑动的效果很有意思,特提取其中的代码。并加上类似mac的画面移动的动画效果。 二、详解 1、代码一:界面滑动(QWidget) (1)sliderpicture.h [html] view plain copy #ifndef SLIDERP Read More
posted @ 2016-02-01 21:00 findumars Views(1774) Comments(0) Diggs(0)
前面我们已经详细介绍过有关线程的一些值得注意的事项。现在我们开始对线程做一些总结。 有关线程,你可以做的是: 在QThread子类添加信号。这是绝对安全的,并且也是正确的(前面我们已经详细介绍过,发送者的线程依附性没有关系) 不应该做的是: 调用moveToThread(this)函数 指定连接类型 Read More
posted @ 2016-02-01 20:59 findumars Views(678) Comments(0) Diggs(0)
多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子。因为event比较难做例子,也就没有去写,只是把大概写了一下。今天带来的是新的部分,有关Qt的2D绘图。这部分不像前面的内容,还是比较好理解的啦!所以,例子也会增加出来。 有人问豆子拿Qt做什么,其实,豆子就是在做一个Qt的 Read More
posted @ 2016-02-01 20:57 findumars Views(15006) Comments(0) Diggs(0)
前面的例子都是使用的系统提供的拖放对象 QMimeData 进行拖放数据的存储,比如使用 QMimeData::setText() 创建文本,使用 QMimeData::urls() 创建 URL 对象。但是,如果你希望使用一些自定义的对象作为拖放数据,比如自定义类等等,单纯使用 QMimeData Read More
posted @ 2016-02-01 20:56 findumars Views(1136) Comments(0) Diggs(0)
今天开始的部分是关于Qt提供的一些通用算法。这部分内容来自C++ GUI Programming with Qt 4, 2nd Edition。 <QtAlgorithms>提供了一系列通用的模板函数,用于实现容器上面的基本算法。这部分算法很多依赖于STL风格的遍历器(还记得前面曾经说过的Java风 Read More
posted @ 2016-02-01 20:55 findumars Views(3435) Comments(0) Diggs(0)
前面我们说过,Qt 不是使用的“标准的” C++ 语言,而是对其进行了一定程度的“扩展”。这里我们从Qt新增加的关键字就可以看出来:signals、slots 或者 emit。所以有人会觉得 Qt 的程序编译速度慢,这主要是因为在 Qt 将源代码交给标准 C++ 编译器,如 gcc 之前,需要事先将 Read More
posted @ 2016-02-01 20:54 findumars Views(573) Comments(0) Diggs(1)
所谓 IO 其实不过是与其他设备之间的数据交互。在 Linux 上这个概念或许会更加清楚一些。Linux 把所有设备都看作是一种文件,因此所有的 IO 都归结到对文件的数据交互。同样,与其他进程之间也存在着数据交互,这就是进程间交互。 为什么需要进程间交互呢?Qt 虽然是一个很庞大的库,但是也不能面 Read More
posted @ 2016-02-01 20:53 findumars Views(15278) Comments(0) Diggs(1)
前段时间说了Qt一些类库的使用,今天来换一下口味,来看一下程序设计的问题。今天来说的是关于共享库 shared library。 如果你打开一些 Windows 应用程序的目录,你会发现有很多程序的 exe 文件都很小,大约几百K 的样子,并且目录中不仅仅只有一个 exe 文件,还包含着一大堆 dl Read More
posted @ 2016-02-01 20:49 findumars Views(996) Comments(0) Diggs(0)
本来打算把《Qt学习之路》作为一个类似教程的东西,所以就不打算把一些关系到源代码的内容放在那个系列之中啦。因此今天就先来看一个新的开始吧!这个系列估计不会进展很快,因为最近公司里面要做 flex 的项目演示,所以时间不是很多啦,并且源代码也不是那么容易看的。豆子也不是 C/C++ 出身,因此看起来也 Read More
posted @ 2016-02-01 20:36 findumars Views(3293) Comments(0) Diggs(0)
http://devbean.blog.51cto.com/448512/335550 http://devbean.blog.51cto.com/448512/325581 http://devbean.blog.51cto.com/448512/326686 Read More
posted @ 2016-02-01 20:32 findumars Views(567) Comments(0) Diggs(0)
http://devbean.blog.51cto.com/448512/d-8/p-2 Read More
posted @ 2016-02-01 20:29 findumars Views(778) Comments(0) Diggs(0)
最近使用 Qt 做一个离线博客编辑器,因而用到了 Qt 的富文本处理。参考 Qt 的文档,记录下 Qt 的富文本处理的相关技术。文档地址是 http://doc.qt.nokia.com/4.7/richtext.html,本文不是文档的准确翻译,但是内容和文档是基本一致的。 新版本 Qt 使用 Q Read More
posted @ 2016-02-01 20:23 findumars Views(11452) Comments(0) Diggs(0)
《让你的 Qt 桌面程序看上去更加 native》是一个系列文章。在这个系列中,你将会了解到如何让你的 Qt 桌面应用程序看上去更加 native。这里,我假设你已经清楚如何使用 Qt 编写桌面应用程序,因为文章中大多都是所谓的“细节”,而有时候恰恰是这些“细节”决定着用户体验。同时,这里的程序都是 Read More
posted @ 2016-02-01 20:21 findumars Views(1060) Comments(0) Diggs(0)
这篇文章首先发布于我的主页 http://www.devbean.info,以后也会直接发布在那里。现在有 Flex 4 的一篇和 《从 C++ 到 Objective-C》系列,感谢大家支持! 强类型语言在创建对象时总会显式或隐式地包含对象的类型信息。也就是说,强类型语言在分配对象内存空间时,总会 Read More
posted @ 2016-02-01 20:20 findumars Views(765) Comments(0) Diggs(0)
信号与槽用于对象之间的通信。信号与槽机制是Qt的核心特性和区别于其他框架的特性。 Introduction 在GUI程序中,当我们改变一个widget,经常需要其他的widget得到通知。更普遍的是,我们需要任意的对象可以与另外的对象进行通信。例如,一个用户点击关闭按钮,我们可以需要windows的 Read More
posted @ 2016-02-01 20:07 findumars Views(5409) Comments(0) Diggs(0)
Internationalization with Qt 应用程序的国际化就是使得程序能在国际间可用而不仅仅是在本国可用的过程。 Relevant Qt Classes andAPIs 以下的类支持Qt的国际化。 QTextCodec QTextDecoder QTextEncoder QTrans Read More
posted @ 2016-02-01 20:02 findumars Views(4275) Comments(0) Diggs(1)
QTextCodec QTextCodec为文本编码之间提供转换。 Qt用Unicode 来存储,绘制和操作字符串。在很多情况下你可能希望操作不同编码的数据。例如,大部分日本文档是以Shift-JIS或 ISO 2022-JP进行存储,然而俄国用户的文档是以KOI8-R 或 Windows-1251 Read More
posted @ 2016-02-01 19:58 findumars Views(2532) Comments(0) Diggs(0)
The Property System Qt提供一个类似于其他编译器供应商提供的精致的属性系统。然而,作为一个编译器和平台独立的库,Qt并不依赖于非标准编译器特性,如__property 或 [property]。Qt解决方案能在支持Qt的平台上与任何标准C++编译器一起工作。它依赖于 Meta-O Read More
posted @ 2016-02-01 19:54 findumars Views(737) Comments(0) Diggs(0)
Introduction Qt库提供了一组基于模板的一般化的容器类。这些容器可以存储指定的类型的元素。例如,如果你需要一个可变大小的Qstring数组,可以用QVector<QString>.。 这些容器比STL容器更轻更安全更容易使用。如果你不熟悉STL或者更喜欢以Qt的方式做事,你可以用这些类取 Read More
posted @ 2016-02-01 19:52 findumars Views(14347) Comments(0) Diggs(0)
The State Machine Framework 状态机框架提供了用于创建和执行状态图的类。概念和符号是基于Harel的Statecharts: A visual formalism for complex systems,它也是UML状态图的基础。状态机执行的语义是基于State Chart Read More
posted @ 2016-02-01 19:51 findumars Views(2829) Comments(0) Diggs(0)
the Meta-Object Compiler (moc) 元对象编译器是处理Qt的C++扩展的程序。 moc工具读取C++头文件,如果它找到一个或者多个类声明包含Q_OBJECT宏。它生为那些类成一个包含元对象代码的C++源文件。元对象代码是信号与槽机制,运行时信息和动态属性系统所必需的。 mo Read More
posted @ 2016-02-01 19:49 findumars Views(815) Comments(0) Diggs(0)
The Meta-Object System Qt元对象系统为对象之间的交互提供了信号与槽机制,运行时信息和动态属性系统。 元对象系统基于三件事: 1. Qobject类作为所有要利用元对象系统的基类。 2. 在类的private段声明Q_OBJECT 宏,以可以使用元对象特性,例如动态属性,信号与 Read More
posted @ 2016-02-01 19:47 findumars Views(428) Comments(0) Diggs(0)
看了不少Qt线程的东西,下面总结一下Qt新建一个线程的方法。 一、继承QThread 继承QThread,这应该是最常用的方法了。我们可以通过重写虚函数void QThread::run ()实现我们自己想做的操作,实现新建线程的目的。前面已经介绍了Qthread,这里就不重复了。 这种方法,我们每 Read More
posted @ 2016-02-01 19:45 findumars Views(5043) Comments(0) Diggs(0)
QThread 继承 QObject.。它可以发送started和finished信号,也提供了一些slot函数。 QObject.可以用于多线程,可以发送信号调用存在于其他线程的slot函数,也可以postevent给其他线程中的对象。之所以可以这样做,是因为每个线程都有自己的事件循环。 在进行下 Read More
posted @ 2016-02-01 19:42 findumars Views(2213) Comments(0) Diggs(0)
QThread实例代表一个线程,我们可以重新实现QThread::run(),要新建一个线程,我们应该先继承QThread并重新实现run()函数。 需要注意的是: 1.必须在创建QThread对象之前创建 QApplication (或QCoreApplication)对象。 2. QCoreAp Read More
posted @ 2016-02-01 19:36 findumars Views(12881) Comments(0) Diggs(0)
今天看了一些QSettings的简单用法,可以用来保存程序的设置,使得程序每次启动都可以显示上次关闭时的状态。我这里实现了一个简单的文本编辑窗口,可以设置文本的字体,字体的颜色和背景色。每次关闭程序都保存程序的几何大小,位置和文本以及文本所设置的格式,方便启动程序后继续编辑。 文本编辑窗口 Text Read More
posted @ 2016-02-01 19:15 findumars Views(1067) Comments(0) Diggs(0)
QList QList<T> 是一个Qt通用容器类。它存储一序列的值,并且提供基于索引的数据访问方法和快速的插入和删除操作。 QList<T>, QLinkedList<T>, 和 QVector<T>提供类似的功能,这里进行几点概述: 1. 大多数情况下,最好使用QList。它基于索引的API比Q Read More
posted @ 2016-02-01 19:14 findumars Views(5997) Comments(0) Diggs(0)
最近做项目遇到一个需求,有一个buttonSlot()执行要耗点时间,为了防止用户无限制的乱点出现问题,考虑加一个互斥锁,使得每次执行完后才允许执行下一次。大概意思是://QMutex m_mutex;是window类的成员变量void window::buttonSlot(){ if(m_mute Read More
posted @ 2016-02-01 19:13 findumars Views(547) Comments(0) Diggs(0)
又到周末了,尝试实现一个图标拖拽的小程序;主要实现的功能有: 1.两个部件的图标拖动转移 2.可以切换图标查看模式,有大图标和小图标模式两种 3.可以删除图标,添加也应该不难,所以就没实现。 4.可以框选多个图标 5.改变部件大小可以自动重新布局图标 这里初始化左边有十几个图标,右边的部件是空的。 Read More
posted @ 2016-02-01 19:12 findumars Views(2090) Comments(0) Diggs(0)
今天学习如何用QtSoap访问Web Service服务。这里调用的是查询QQ在线状态的服务qqOnlineWebService。调用的几个步骤: 1.创建QtSoapMessage对象 message; 2.message调用setMethod设置调用的服务 3.message调用addMetho Read More
posted @ 2016-02-01 19:11 findumars Views(3913) Comments(0) Diggs(0)
跳槽到了新的公司,开始苦逼的出差现场开发,接触到了新的应用。有很多应用需要将Table导出成表格,可以把table导出成csv格式的文件。跟大伙分享一下; [cpp] view plain copy lass TableToExcle : public QDialog { Q_OBJECT publ Read More
posted @ 2016-02-01 19:08 findumars Views(2846) Comments(0) Diggs(0)
forward_list forward_list是C++11版本才有的。forward_list被实现为单链表,而list是一个双向链表,所以forward_list要比list高效一些。forward_list设计的时候就是追求效率的,跟我们自己写的C格式的单链表一样的高效。 考虑到效率问题,f Read More
posted @ 2016-02-01 19:07 findumars Views(1636) Comments(0) Diggs(0)
Xml生成word总结 使用xml生成word的基本步骤在《使用xslt转化xml数据形成word文档导出.doc》中说明比较清楚了。但是其中的细节并未说到,因此自己折腾了两天总算成功了。以下是我在使用过程中碰到的问题要点: 必须使用word 2003. 1.下面通过例子演示: 简单 的xml以及对 Read More
posted @ 2016-02-01 19:04 findumars Views(2823) Comments(0) Diggs(0)
程序中数据导出是经常有的需求,今天学习把文本导出到pdf文件。主要是用QPrinter,QPainter [cpp] view plain copy TextEditToPdf::TextEditToPdf(QWidget *parent, Qt::WFlags flags) : QDialog(p Read More
posted @ 2016-02-01 18:59 findumars Views(3514) Comments(0) Diggs(0)
今天写代码,发现Qt4中QTableWidget显示查询结果数据时存在一个问题,具体原因不知道是用法不对还是QTableWidget本身存在的bug。现象如下: 1. 查询,能正常显示查询结果 2. 点击表头排序 3. 再一次进行查询,发现某写列内容为空 构造函数代码: pTable = new Q Read More
posted @ 2016-02-01 18:56 findumars Views(3145) Comments(0) Diggs(0)
QVector和vector的比较: Qvector默认使用隐式共享,可以用setSharable改变其隐式共享。使用non-const操作和函数将引起深拷贝。at()比operator[](),快,因为它不进行深拷贝.Qvector取值都会检查越界问题。 看看简单的例子: QVector<int> Read More
posted @ 2016-02-01 18:55 findumars Views(6016) Comments(0) Diggs(0)
拖拽是编程中经常要用到的,我这里主要是实习了Treewidget之间直接拖拽Item,按下Ctrl键的话是copy,不按Ctrl则是Move。以下是实现代码 [cpp] view plain copy class TreeItemMimeData:public QMimeData { Q_OBJEC Read More
posted @ 2016-02-01 18:52 findumars Views(4845) Comments(0) Diggs(0)
偶然发现Qt有个控件可以实现下拉列表,所以就试着实现一下类似QQ面板的下拉列表,这里主要实现几个功能: 1.可以删除列表中图标 2.可以像qq一样的,把某个分组下的图标转移到另外的分组 3.添加分组 代码里写了注释了,这里就不重复了,下面直接看代码吧。 自定义的数据模型 ListModel继承了QA Read More
posted @ 2016-02-01 18:51 findumars Views(8349) Comments(0) Diggs(0)
本文主要研究了一下如何把树形结构的数据保存到文件并读取出来。为了更形象说明用了一个界面程序显示,程序用了model/view框架。 数据类 DataItem 就是保存在树形结构的基本数据。其最重要的保存数据的函数是SerialzeData [cpp] view plain copy class Da Read More
posted @ 2016-02-01 18:49 findumars Views(2725) Comments(0) Diggs(0)
Qt同步线程 我们知道,多线程有的时候是很有用的,但是在访问一些公共的资源或者数据时,需要进行同步,否则会使数据遭到破坏或者获取的值不正确。Qt提供了一些类来实现线程的同步,如QMutex,QMutexLocker,QReadWriteLock,QReadLocker,QWriteLocker,QS Read More
posted @ 2016-02-01 18:46 findumars Views(11172) Comments(0) Diggs(0)
前段时间项目上的要求,要实现一个列表(见下图1)。类似网页上的列表,可以通过选中标题栏的复选框,实现全选或者全不选的功能。但是看了很久,都没看到Qt哪个方法可以实现在标题栏添加控件。 图1 要实现这样的效果,也许我们首先想到的,就是直接生成一个CheckBox,用setGeometry()设置它的位 Read More
posted @ 2016-02-01 18:20 findumars Views(829) Comments(0) Diggs(0)
新版本的QQ聊天窗口可以实现拖动,分离出新的窗口。浏览器等软件也可以实现类似操作。所以心血来潮想用Qt实现类似的功能。想用QTabWidget直接实现是很难的,仔细阅读源码,发现QTabWidget内部是由QStackedWidget和QTabBar组合实现的。所以很自然的想到,只要继承QTabBa Read More
posted @ 2016-02-01 18:17 findumars Views(4906) Comments(0) Diggs(0)
http://blog.csdn.net/hai200501019/article/details/8474582http://blog.csdn.net/hai200501019/article/details/8482876http://blog.csdn.net/hai200501019/ar Read More
posted @ 2016-02-01 18:13 findumars Views(737) Comments(0) Diggs(0)
可重入和线程安全 可重入和线程安全这两个术语,经常出现在计算机编程中,用于指明类和函数在多线程程序中的使用。 可重入:若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。 若一个函数是可重入的,则该函数: Read More
posted @ 2016-02-01 18:08 findumars Views(606) Comments(0) Diggs(0)
Qt状态机框架是基于状态图XML(SCXML) 实现的。从Qt4.6开始,它已经是QtCore模块的一部分。尽管它本身是蛮复杂的一套东西,但经过和Qt的事件系统(event system)、信号槽(signals and slots)及属性系统(property system)深度整合,它使用门槛并 Read More
posted @ 2016-02-01 18:07 findumars Views(1715) Comments(0) Diggs(0)
从内存泄露开始? 很简单的入门程序,应该比较熟悉吧 ^_^ #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label Read More
posted @ 2016-02-01 18:02 findumars Views(3882) Comments(0) Diggs(1)
STLport的下载 http://sourceforge.net/projects/stlport/ STLport的编译 * 试验环境 : win7x64sp1 + vc6sp6* 打开控制台窗口 cmd* 运行vc6编译环境命令行批处理 *移除STLport编译配置 * 配置STLport的所 Read More
posted @ 2016-02-01 03:09 findumars Views(805) Comments(0) Diggs(0)
前言 将代码拆分了一下, 如果处理更多的消息也不怕看的眼花 SDK编程就是对各种Windows消息的处理 实验工程 [cpp] view plaincopy /// @file exam_1.cpp /// @brief 查阅本地MSDN, 手工写SDK程序 #include "common.h" Read More
posted @ 2016-02-01 03:08 findumars Views(888) Comments(0) Diggs(0)
没有虚函数时 [cpp] view plaincopy /// @file test_class.c /// @brief 测试一个类有多个基类的内存布局(没有虚函数时, 有虚函数时) #include <stdlib.h> #include <stdio.h> class CA { public: Read More
posted @ 2016-02-01 03:06 findumars Views(481) Comments(0) Diggs(0)
在做boot loader的实验, 但是要在格式化为FAT32的U盘上使用. * 用WinHex将U盘全部字节都填成0. * 用UltraIso中的格式化功能, 将U盘格式化成FAT32, 分配单元为4KB * 用UltraIso提供的写入MBR功能,向U盘写入可引导的MBR, 参数为USB-HDD Read More
posted @ 2016-02-01 03:00 findumars Views(398) Comments(0) Diggs(0)
在CodeProject上看到一个Demo, 在服务中以当前用户身份启动一个程序. 跟帖的人指出了一些bug, 我整理了一下, 将跟帖人指出的bug在工程中修正. 他提供的类, 也有一个小bug, 没有被跟帖的人指出, 被我发现并修正. 这个Demo整理后, 被我用在项目中, 用起来效果还不错. 以 Read More
posted @ 2016-02-01 02:59 findumars Views(847) Comments(0) Diggs(0)
前言 当类没有成员变量的情况下, 类首地址有4个字节的空间, 这里可以放我们模拟出来的虚表入口地址. 当类有成员变量的情况下, 类首地址就是成员变量, 所以, 为了模拟虚表实现, 需要在成员变量前, 再定义一个int型变量, 用来存放模拟的虚表入口地址. 现在还得不到虚析构函数的地址, 暂时按照非虚 Read More
posted @ 2016-02-01 02:44 findumars Views(515) Comments(0) Diggs(0)