[翻译]理解Qt容器:STL VS QTL(一)——特性总览

注:此文为翻译大牛的文章,原文地址:http://marcmutz.wordpress.com/effective-qt/containers/ (需翻墙),原文较长,我E文不是很好,而且个人时间安排,我就分段翻译发出了,这是第一篇,余下的我会慢慢补齐的。

容器类是面向对象编程的一个重要的部分,是一个而非常重要的,帮助我们去管理内存的工具。

Qt有它自己实现的容器类,十分像STL,但是还是有些差异的,一些是Qt做的补充,还有一些不能对应。作为一个Qt开发者,是非常重要的去理解什么时候去使用哪一个Qt容器类,和一些时候,你去用STL去替换QTL。 Continue reading “[翻译]理解Qt容器:STL VS QTL(一)——特性总览”

为QNetworkAccessManager添加超时提醒

在做更新,在测试异常的时候,在下载过程中,发现如果直接系统禁用了网络,会报错误,可以捕获。但是如果是第三方软件限制程序联网,问题来了。

程序会一直在那里等待,没有异常,也不发送QNetworkAccessManager::finsh和QNetworkReply::error和QNetworkReply::finsh信号。

所以动念头为下载加个超时,但是QNetworkAccessManager,QNetworkReply和QNetworkRequest都没有相关的设置函数。其实仔细想一下,也没有办法直接提供超时,因为下载的文件有大有小,网络有快有慢,什么才算超时呢。 Continue reading “为QNetworkAccessManager添加超时提醒”

QRunInfo: Qt 系统运行信息获取的一些简单封装

QRunInfo是从Qt-Installer-Framework中提取的一些系统验证和运行信息获取的一些Qt封装。我只是为部分接口整理和组织下代码。代码基于LGPL2.1和LGPL3.0协议。

QRunInfo 地址:https://github.com/dushibaiyu/QRunInfo

其中涉及Qt的core模块,gui和widget模块(主要是AdminAuthorization)有用QWidget。 Continue reading “QRunInfo: Qt 系统运行信息获取的一些简单封装”

QSsh之android版编译

今天看到有人在Qtcn.org给我留言问我QSsh的botan在android和ios 的arm下编译不通过,我就去测试了下,果然是(如果哪位哥们看到,我道个歉,前天发的,今天才看到)。以前只在win和linux下,果然arm有问题。我就去差了下原因是Botan不同平台,比同cpu和编译器的配置不同的。

所以我就去看了下QSsh用的botan的用法,他是把botan的配置那么多宏在botan.pri下根据平台和编译器进行很多定义的。仔细看了看那么多的宏和判断,而且加上我对botan不是十分的熟悉,就不敢妄自更改他的配置。我也就想了个偷懒的方法,去替换掉QSsh用的Botan,直接用自己官方下载的Botan替换掉QSsh里的Botan。 Continue reading “QSsh之android版编译”

Qt父子对象内存管理实现简析

用Qt大家都知道Qt有一套自己的内存管理机制:父子对象管理机制。适用于所有继承于QObject的类。即在一个类中指定他的父对象,可以用void QObject::setParent(QObject * parent)函数指定,也可以在构造时传入参数,一般继承自QObject的类,Qt-c自动生成的类模板的构造函数都是explicit 类名(QObject *parent = 0);这个parent就是你可以制定的父对象。当一个对象删除之后,会自动删除他的所有的子对象,这样你就可以有很多new,但是只有一个delete。(注:这个父子对象关系和继承的父子类是不一样的,而且可以说基本没关系的。)

下面我们就扒下Qt的源码,找下它的实现。 Continue reading “Qt父子对象内存管理实现简析”

zermq简单使用

原本项目用的ICE中间件,但是ICE的异步和回调稍显繁琐,而且ICE强大的地方还都用不到,所以我提出用socket代替Ice通讯,头头担心我们自己从socket构建的话很多地方考虑不到,异常断开,数据连包,大包接受不全、、、等等。还是倾向与完善的通讯,于是就提出用0mq、、所以就研究了两天zmq,初步实现了一个需要的初步框架,先探讨下zmq、、 Continue reading “zermq简单使用”

两个基于C++/Qt的开源WEB框架

1.tufao

 项目地址:

 主页:

介绍:

Tufão is a web framework for C++ that makes use of Qt’s object communication system (signals & slots).

Tufão是一个C + +的Web框架,使用Qt的对象的通信系统(信号与槽)。

Features: 特性

  • High performance standalone server 高性能独立服务器
  • Cross-plataform support 跨平台支持
  • Good documentation 良好的文档
  • Support modern HTTP features 支持现代的HTTP特性
  • Persistent streams 持续流
  • Chunked entities 分块实体
  • 100-continue status
  • WebSocket
  • HTTPS support 支持HTPPS
  • Flexible request router 灵活的路由请求
  • Static file server with support for conditional requests, partial download and automatic mime detection 静态文件服务器与条件请求支持,部分下载和自动检测
  • Plugin-based server to allow change the running code without restart the application 服务器基于插件机制,支持更改运行代码(?)而不用重启程序。
  • Flexible and secure session support 灵活和安全的会话支持
  • QtCreator’s plugin to allow create new applications rapidly  QtCreator的插件,以便快速创建新的应用程序
  • Lots of tests 经过了大量的测试
  • Timeout support 超时支持
  • C++11

It uses Ryan Dahl’s HTTP parser to provide good performance. 采用Ryan Dahl’s HTTP分析器以提供更好的性能

You can generate documentation from the source code using Doxygen. The documentation will be put on the doc folder in the html and tex formats. There is also experimental support for Qt compressed help files.

您可以使用Doxygen的源代码生成文档。该文件将在html和tex的格式被提上doc文件夹。也有对Qt的压缩帮助文件的实验性支持。

Continue reading “两个基于C++/Qt的开源WEB框架”