为QNetworkAccessManager添加超时提醒

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

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

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

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

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

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

其中涉及Qt的core模块,gui和widget模块(主要是AdminAuthorization)有用QWidget。 继续阅读“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。 继续阅读“QSsh之android版编译”

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

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

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

zermq简单使用

原本项目用的ICE中间件,但是ICE的异步和回调稍显繁琐,而且ICE强大的地方还都用不到,所以我提出用socket代替Ice通讯,头头担心我们自己从socket构建的话很多地方考虑不到,异常断开,数据连包,大包接受不全、、、等等。还是倾向与完善的通讯,于是就提出用0mq、、所以就研究了两天zmq,初步实现了一个需要的初步框架,先探讨下zmq、、 继续阅读“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的压缩帮助文件的实验性支持。

继续阅读“两个基于C++/Qt的开源WEB框架”

QTcpServer多线程实现

目的:每个客户端连接的tcpSocket分别分配一个专门的线程来处理。

实现时分别继承QTcpServer和QTcpScoket实现出自己需要的类。

继承QTcpServer为每个客户端连接时分配线程,并接受处理tcpScoket的信号和槽、、还有发送信息,储存连接信息等。

继承QTcpScoket为处理通信数据和增加信号的参数,以便和tcpServer更好的配合。

继续阅读“QTcpServer多线程实现”