RabbitIm

Qt

Qt 编译

  1. Building Qt 5 from Git; 中文
  2. Building Qt 5 for Android
  3. How to build a static Qt version for Windows with gcc
  4. Building a static Qt for Windows using MinGW
  5. VS2013编译Qt5.2.1 32位静态库debug-and-release版及结果分享
  6. MinGW 64 bit
  7. Qt贡献向导 ;中文

Qt环境配置

  1. Qt on Android Episode
  2. 关于qtcreator+vs2008+CDB调试太卡的有关问题研究
  3. 路径分隔符问题:windows平台(\)和linux平台(/)的路径分隔符不同. 在qt程序中的路径只需要使用 (/)作为分隔符,qt会自动转换成正确的平台分隔符。 如果要显示,可以用QDir::toNativeSeparators

发布

  1. Qt发布
  2. Qt for Windows - Deployment
  3. qt windows分发工具使用
  4. 在ubuntu上安装qt
  5. 从git中编译qt5
  6. windeployqt 在 mingw 分发时,它是根据程序是否 strip 来判断是否是 Release 版本。所以在编译后,需要 strip 目标。
  7. CMake:CPackPackageGenerators
  8. Debian 新维护人员手册
  9. debian 打包
  10. debhelper 7
  11. 从源码构建二进制deb包的步骤(cmake install 命令和devhelper dh_make的使用)
  12. 自动安装、控制脚本

开发中的问题

  1. SendMessage在msvc下与msvc定义的宏相冲突 解决办法:在使用的.cpp文件最前部加上:#undef SendMessage
  2. Message.cpp 在msvc下编译时,找不到CMessage对象的内容 原因是,与msvc中的message目标文件命名冲突,导制编译器找到的msvc系统的message目标文件。
    解决办法:改名为 ManageMessage.cpp.相应的CMessage类改名为CManageMessage
  3. 设置应用程序图标,应用程序图标是与平台相关的。
    • android 应用程序图标是在 android 配置清单文件(AndroidManifest.xml) 中设置。
    • windows 应用程序图标 需要单独在根目录下写一个资源文件。参考:http://blog.sina.com.cn/s/blog_71fa0df501011xrk.html
      1. 通过qmake生成makefile实现过程:
        1. 找到一张图片.ico,名字改为myappico.ico;
        2. 创建一个新的文本文档,内部添加 IDI_ICON1 ICON DISCARDABLE “myappico.ico”,并将文件重命名为AppIcon.rc;
        3. 在RabbitIm.pro文件最后加上RC_FILE = AppIcon.rc,重新生成之后,就修改成功了 2.不用qmake生成makefile实现过程: 前面两步骤一样,最后一步改为,将.rc文件加载至工程中,通过右键工程——添加——已存在文件,添加后右键.rc文件编译,重新生成可执行文件后就修改成功了
  4. 国际化
  5. Qt国际化

Qt控件

  1. QTreeView 使用
  2. Qt树形控件QTreeView使用2——复选框的设置 这个中例子有些问题,本人已抽象出来放到本工程的 CItemModelCustom 中。
  3. 在views中选择数据项
  4. Qt动画效果的实现,QPropertyAnimation
  5. Qt Model/View
  6. Qt之文本编辑

样式

  1. QMessageBox 背景设置
  2. 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件
  3. Qt的皮肤设计
  4. 漫谈QWidget及其派生类(二) :http://blog.csdn.net/dbzhang800/article/details/6741344

Qt 线程

  1. QtThread线程介绍 每个线程要用 setObjectName 设置名称,便于调试。
  2. Qt 信号与线程:
  3. Qt 学习之路 2(71):线程简介
  4. Qt 学习之路 2(72):线程和事件循环
  5. Qt 学习之路 2(73):Qt 线程相关类
  6. Qt 学习之路 2(74):线程和 QObject
  7. Qt 学习之路 2(75):线程总结

Qt事件

  1. QWidget 鼠标移事件:
    • 当mousetracking为off时,只有当一个鼠标键按下时,才会有mouseEvent事件。
    • 当mousetracking为on时,没鼠标键按下,也会有mouseEvent事件
    • 用QWidget::setMouseTracking进行设置。
  2. Qt获取组合键
  3. Qt 事件过滤器
  4. Qt 事件过滤器
  5. Qt 处理配置文件:参考代码中的CFrmLogin::SaveConf
  6. QT拖拽功能简介 http://blog.csdn.net/pcsuite/article/details/6147191
  7. Qt android 平台写配置文件权限: android平台编译出来的是一个动态库,它安装后,位于安装目录的lib目录下。此目录只有读权限。只有system用户才有写权限。 而安装目录除了lib目录外,对应用程序的用户有读写权限。 qApp->applicationDirPath()得到的是安装目录下lib的位置。所以向上一级,到安装目录,就可以有读写权限。
  8. Qt 样式库: http://qt-project.org/wiki/Category:Styles

截屏

  1. 用Qt写一个截屏工具
  2. Qt中屏幕或窗口截图功能的实现
  3. QT中MDI应用程序中更改子窗口大小或是全屏显示子窗口的方法
  4. Qt on Android:应用截屏

android 下禁用屏保

//方法一 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.main); 
//方法二 
@Override
protected void onResume() {
	super.onResume();
	pManager = ((PowerManager) getSystemService(POWER_SERVICE));
	mWakeLock = pManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
			| PowerManager.ON_AFTER_RELEASE, TAG);
	mWakeLock.acquire();
}

@Override
protected void onPause() {
	super.onPause();
	
	if(null != mWakeLock){
		mWakeLock.release();
	}
}
//方法三
public void unLock(){
	mContentResolver = getContentResolver();
	//不建议使用
	//setLockPatternEnabled(android.provider.Settings.System.LOCK_PATTERN_ENABLED,false);
	
	//推荐使用
	setLockPatternEnabled(android.provider.Settings.Secure.LOCK_PATTERN_ENABLED,false);
}

private void setLockPatternEnabled(String systemSettingKey, boolean enabled) {
	 //不建议使用
	 //android.provider.Settings.System.putInt(mContentResolver,systemSettingKey, enabled ? 1 : 0);
	
	 //推荐使用
	 android.provider.Settings.Secure.putInt(mContentResolver, systemSettingKey,enabled ? 1 : 0);
}
//但注意要加权限AndroidManifest.xml文件中加入
//<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//还要特别注意的是要加入 android:sharedUserId="android.uid.system",但有一个问题,
//如果加入了sharedUserId后就不能使用eclipse编译了,一定要手动通过 mm -B进行编译,然后把apk install到模拟器或设备中

视频与图像

  1. Qt 处理摄像头
  2. html img Src base64 图片显示 :http://blog.csdn.net/samqingqing/article/details/7532141
  3. OpenCV2.4.4 图像旋转和缩放:http://blog.csdn.net/masibuaa/article/details/9017761

xmpp 协议

  1. 对xep-0030 服务发现的一点理解,目录查询
  2. 多用户聊天协议
  3. jabber/XMPP文件传输的一些情况
  4. xmpp 白板:
    • http://xmpp.org/extensions/inbox/wb.html
    • http://xmpp.org/extensions/inbox/whiteboard.html
    • http://xmpp.org/extensions/inbox/whiteboard2.html
  5. 群聊天:
    1. 先查询指定域名的 muc 服务
    2. 查询指定 muc 服务中的房间 2.1 查询房间信息(可选)
    3. 查询房间的item
    4. QXmppMucRoom 会自动查询房间信息,并触发相应事件。
    5. 当用户退出 IM 时,会自动退出房间。

ICE

协议

Interactive Connectivity Establishment (ICE) STUN协议解析

开源库

libnice libjuice

服务器

coturn

第三方库

libcurl 库使用

  1. Libcurl实现断点续传

二维码

  1. qr码主页
  2. qr码类型
  3. QR码生成原理(一)
  4. 二维码生成库 libqrencode
  5. 二维码解码库 qzxing

第三方工具

  1. cmake 学习笔记(一)
  2. CMake:CPackPackageGenerators
  3. cpack使用
  4. qmake 乱乱乱谈(一)
  5. README.md语法格式
  6. CSDN Markdown简明教程
  7. git 使用详解(8)– tag打标签
  8. Git查看、删除、重命名远程分支和tag
  9. Git 工具 - 子模块

c 语言

  1. 预编译宏

cmake

《CMake入门实战》:http://www.hahack.com/codes/cmake/