Index

kinect for Windows SDK 发布啦~~~

终于在美国时间的16号晚上,千呼万唤的东西终于出来了~~~

官方的支持软件出来了~~撒花~~~

感觉文档还是很强大的。。虽然因为这个我必须去安装一个VS2010但是!,这一切都是值得的啊!!

在这里先附上下载。详细的测试之后再进行~

毕设终于见到了希望的曙光了!

在这个时间与地点,2011年六月15的凌晨两点。毕设论文与答辩都将在三天之内搞定的时刻。漫长的毕业工作终于接近尾声了。。。<!--more-->

[ZZ]关于Qt程序支持中文方法的总结

今天看到XClinux老大的给力的帖子,详细的总结了在qt中支持中文的各种方法。感觉非常给力啊~转帖在这里。看能不能什么时候补充一些自己的例子和图片啊~<!--more-->在论坛里看到很多网友对Qt程序支持中文方面不停地发问,经年累月,我记的这个问题好多年前就已经在论坛有帖子给出过答案了,或者有网友已经在自己的博客中 给出了标准答案,直到现在仍然有人不停地问,这里我总结一下(只涉及到Windows、X11/Linux、Meego、Symbian平台)。

  1. 如果程序要支持多国语言,那程序最好全部使用latin1编码(只是最好,并没说只能),在代码中使用Qt的tr()机制,最后做统一的翻译工作,用 lupdate工具生成.ts翻译文件,用linguist或任意文本编辑器进行翻译,最后用lrelease工具生成.qm文件,在程序中用 QTranslator进行加载。
  2. 如果想要程序中的一些标准对话框、标准右键菜单等也显示中 文,那么需要加载qt_zh_CN.qm文件,它是Qt官方对Qt库中一些文字的中文翻译,最明显的比如QMessageBox上 的"OK"、"Cancel"按钮,QLineEdit编辑框上点击右键弹出的"Copy"、"Paste"、"Select All"等菜单项,想让它们变成中文,只要在程序中用QTranslator加载qt_zh_CN.qm文件即可(qt_zh_CN.qm在Qt安装目录 下的translations目录下,如果没有, 请用lrelease工具从qt_zh_CN.ts文件生成),对于其它语言的Qt库文字翻译,同理,都在Qt安装目录下的translations目录 下。如果用到了一些其它Qt组件,也需要翻译的话,比如QtDesignerClient、QtAssistantClient,它们的翻译文件也在 translations目录下(Qt SDK中集成的好像没有,可以找Qt源代码包下载来找)。
  3. 如果在程序中,需要对GBK编码 (包括GB2312、GBK、GB18030,也叫cp936)字符串进行转换(成unicdoe、UTF-8等),那么就需要加载插件 qcncodecs(在Windows下在Qt安装目录下的plugins/codecs/qcncodecs4.dll,Linux下在/usr /lib/libqt4/plugins/codecs/qcncodecs.so.4,Symbian环境安装qt- installer.sis,meego环境已自带,其它环境未测试过)。不过,如果做中文平台下的程序,似乎避免不了的,所以总是将这个插件带上吧。至 于插件如何加载,后面再说。
  4. 如果想在源程序文件中直接使用中文,那么需要如下几步:
    1. 确保qcncodecs插件在运行时能正确加载,因为要靠它来转换中文字符串。
    2. C++源代码使用GBK编码来编写。编程中常用的编码无外乎两种,即GBK、UTF-8,这里推荐使用GBK,是由于要兼容编译器的原因,因为 UTF-8文件有BOM头的问题,不同的编译器(msvc、gcc)对其默认处理不同,而使用GBK编码,则编译行为就一致了。考虑到有些编译器比这还麻 烦,只支持latin1,那只有使用1中所介绍的方法了。
    3. 在main()函数Qt(Core)Application对象创建之后,加入下面的代码: [cpp]QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));[/cpp]

      其实无论如何,这些字符串最后都转换成了unicode的了,Qt内部使用的编码。注意,这里不推荐将GBK换成System,因为System,在 Windows下,它会返回cp936,在日文windows系统下,那根本就不对路。在大多数Linux下,使用的是UTF-8,也不对路。所以,为稳 妥起见,请使用“GBK“。

  5. 程序发布时,可能会产生中文乱码问题,归根到底是因为无法进行中文编码转换的原因,也就是无法找到qcncodecs插件的原因,那只要正确的将它找到就行了。那如何发布?它分为两种情况:
    1. 系统中已经有了Qt4环境,无论是系统自带的,还是有专有的Qt4安装包的,那发布时就不用考虑Qt库及插件的问题了,它会自动根据系统环境变量找到 的。这适用于Linux(许多Linux都自带了Qt4库)、MeeGo(已经自带了Qt4库)、Symbian(Symbian3内置了Qt 库,S60v3、v5等,则需要安装qt-intaller.sis,同样也不需要自己的程序做专门的布署)。
    2. 系统中没有Qt4环境,也没有专有的Qt4安装包,那就自己程序打包时自带Qt库和插件吧。在Windows下,将所依赖的dll库直接放在.exe文件 所在目录下,在linux下,将它们放在一个lib目录下,通过写启动脚本设置LD_LIBRARY_PATH来让可执行程序来找到它。关于插件,我推荐 使用qt.conf的方式,写一个qt.conf文件,将它放在资源文件中的:/qt/etc/qt.conf路径上,或者直接放在可执行文件所在目录 下,其内容如下: [code lang="text" highlight="5"][Paths]
      ; Prefix=.
      ; Libraries=../lib
      ; Binaries=../bin
      ; Plugins=../plugins[/code]

      上面的那个../plugins即是指向你的插件所在目录(所有的插件放在哪个目录下,是相对于可执行文件所在目录),有了这个还不够,还要在main()函数中加入下面的设置当前路径的代码,因为qt.conf中的那个Prefix=.要指定到当前目录的:

      [cpp]QDir::setCurrent(QApplication::applicatoinDirPath(""));[/cpp]

  6. 对于Qt Quick中的.qml文件和Qt Script使用的.js文件,最好还是使用UTF-8编码。
经过以上内容的介绍,大家应该对Qt软件发布有所了解了吧?或许若干年后,Qt库都内置到了各个平台下或有了像qt-installer.sis那样的布署包了,那时,我们就不用像现在这样老碰到布署难题了吧。

天鹅绒之吻XX[20120417 Update]

RT. 计划长期更新。

20120417更新到28话.剩下的很快就会更新

既然已经完结了.那这个也就放在这里不会再怎么大的动作了= =~感谢大家的支持~

wordpress插件 WP-FileBase

感觉wordpress真的是有点无所不能啊。除了一直没有解决的flash的问题。其他几乎是我想有的功能都有了啊。。。今天突然想保存一些文件数据方便下载。就开始找wordpress的插件。果然就被我找到了啊。今年新出的一个给力的插件-------WP-FileBase

<!--more-->filebase支持的文件类型也很多,也有一定的特效。比起wordpress简单的附件功能来说提升了不少。。。还传说提供了很好的防盗链功能= =果然啊~

在这里继续放一个测试用例来展示这么一个很好的插件~

[wpfilebase tag=file id=3 tpl=mp3]

 

webqq初展现

腾讯Web QQ 2.0上线才半年, 近日网上又惊现一个WebQQ的全新界面, 一眼看上去比原来的更绚丽动人! 在此界面中,WebQQ的应用图标直接在桌面展示,用户似乎可以从桌面上直接添加应用;在界面的顶部还疑似增加了切换页面的导航条,用户可以进行页面多屏的切换。

大四毕业论文感想

其实最开始都没有什么难度的觉得不就是一个论文嘛。简单得很啦~但是是鸡上写起来的时候却遇到了各种没有干劲。。真的。。没有干劲。不是什么题目不好,找不到思路,不是什么数据不好弄找不到方法,更不是什么软件复杂编不出来。。
真的只是突然觉得我的思维太懒散了。。写着写着就开始不知道又去哪里上网去了。。。。
很多时候就是才写500字左右就完全在思想上开小差了。。根本不没有任何的毅力啊。坚持啊什么的想法在里面。。纯粹的就是真的没有动力继续写而已啊。。。

QWidget based hover效果

很早之前就觉得现代的软件界面真的是越来越华丽了,各种动画满天飞啊。
QT来说也是如此。近几年大力发展的QT Quick,qml技术就是一个很好的体现。但是学习这些东西所花费的事件总比我们能够支配的时间更长(QML基于JS语法)。
虽然利用qml能够较简洁的实现很好的动画效果。但是我们有时候能在现有技术的基础上稍加修改就能实现一定的动画,让我们的程序外观有质的飞跃的话。最简单的方式,就是跟踪鼠标,判断鼠标在什么控件上,然后做出相应的处理。
<!--more-->笔者的目的就是在以QWidget为基类的控件类上面事件简单的hover效果:
当鼠标移动到一个控件的时候就以其自身的中点为中心放大一定的倍数,鼠标移走之后就变回原来的大小。很简单吧?
开始这样想的。确确实实QT也提供了一些不错的方法。但是。。。在看了QWidget的基类的一些方法之后,发现还真没有QGraphicsView里面的直接的HoverEvent好用。还不好判断什么时候一个Widget获取了鼠标信息。也就是说这个什么时候鼠标在这个Widget里面。什么时候移出这个Widget。
那么怎么才能很方便的实现这种需求呢?
虽然QWidget基类也提供了一个EnterEvent与一个LeaveEvent两个事件来帮助我们实现自己的代码,甚至还有万能的Event的事件,整个系统的截获hook来让我们获取所有所需要的事件。但是。如果要使用这种方式的话。在每一个派生自QWidget的子类的基础上的控件都要子类话,然后仅仅的重载两个事件。虽然也不是不可以。但是在实现上存在很大的困难:
1. 对于一般的小程序,我们都喜欢在qt设计师里面直接拖动控件摆放到自己喜欢的位置。这样就会导致系统直接使用了本身的类,无法重载。
2. 对于一个已经存在的一个项目。前人已经设计好了很多的代码。要把里面的控件全部提取出来进行子类化,这个工作量绝对不是短时间内可能完成的。而且还会带来由于代码量增加导致的bug数可能增加的隐性问题。

今天在群里面讨论了之后,有人介绍了一个非常简单的实现方式。研究了一下具体的实现,确实比较简单。现在总结一下整个实现流程
(待续)