Jump to Navigation

Qt4

Qt4,Gtk+编程

在PyQt5中使用Qt DBus的延时响应返回

在PyQt5中使用Qt DBus的延时响应返回

### dbus介绍
dbus是一种现代linux系统中的本机RPC调用实现,实现了程序间的松耦合依赖。

### RPC调用
RPC调用可分为同步调用和异步调用。
常用的同步调用很容易理解,就是调用并一直等待RPC服务器端的返回值。
异步调用,是针对某次耗时的RPC调用而言,像文件操作,或者是网络操作,或者计算操作。
如果再一直等待服务器端的返回,客户端的效率将非常低下。

### 原始DBus的方式
dbus是使用了异步IO回调方式,所以并不存在所谓的延时响应返回问题。
因为所有的调用都可以看作是异步的,延时的。
不过dbus提供了一个超时机制,如果超时,则dbus调用端不再接收响应返回值了。

### Qt DBus的方式
在Qt中,把DBus的服务,调用响应封装成为Qt的QObject和slots,从而简化DBus的使用。
同时,默认情况下,Qt还把对应slots的返回作为DBus调用结束的标志。
这样就引入一个问题,如果在这个slots中无法立即完成一个dbus调用,应该怎么处理?

关于Qt的应用与定制

很长时间没有写Qt的代码了,这几天又写了一些Qt的代码,
对Qt的的应用,特别是界面部分类的应用,有了一点新的认识。
Qt开发库已经非常成熟强大,不过,对于像软件的写界面部分,
自带的都是比较中规中矩的外观形状。
即使Qt的定制性非常强,如果希望能调整成需要的效果,
还是需要做些扩展功能。
现在开始使用Qt5开发应用,也就使用了Qt5的一些特性,
但本次讲解不以这个Qt5的特性为主,还是以基础的通过窗口类为主。
在本次编写代码过程中,总结出了几个比较实用的窗口定制成果,
1、配置对话框的列表栏
这个涉及到QListWidget类,其实是想把列表栏的图标选项调整高些,
而不是默认的QListWidget行距和默认选中模式。
其实这个很简单, 只需要几行代码,
// 设置listWidget中的项目选中区域
this->uiwin.listWidget->setIconSize(QSize(32,32));

Category:

使用clang编译完全支持C++11的Qt5

总结,通过这次折腾,

加深了对clang/llvm编译工具链的理解。

了解了些关于gcc与clang的内建原子操作机制与实现。

了解了clang当前3.2版本的一些问题。

了解了clang/llvm后续版本的一些新特性。

Qt5关于C++11的配置编译变量设置机制。

Qt5跨平台配置编译的实现机制。

软件包版本说明:

clang/llvm-3.2

libcxx-3.2

libcxxabi-svn-20130223

qt5.0.1

archlinux/kernel3.8.0/x86_64

参考资料:

Category:

近期新Qt/KDE软件版本更新

Qt 5.0.1 Qt5的第一个bug修正版本。
Qtcreator 2.6.2

KDE 4.10.0 KDE桌面大版本升级。

很活跃,更新速度很快。

准备把之前的我的Qt项目更新到Qt5版本了。

Category:

QCoreApplication小测试

为了健壮和安装的原因,程序功能经常分割成几个小的二进制(后台的)程序,而不是合并成一个庞大的程序。

Qt 4为那些需要GUI的Qt后台程序引入了模块的Qt库。多亏了面向嵌入式和许多明智的架构决策,Qt 5步入了新的层次。

看看几个简单的函数:

QCoreApplication app(argc, argv);
QTimer::singleShot(3000, &app, SLOT(quit()));
return app.exec();

这个非GUI Qt程序睡眠3秒后退出。

在我的原装i386 Kubuntu 12.04, Qt 4.8.1平台上,valgrind工具报告堆内存使用达102k,callgrind报告使用1.9M(×)内存。

让我们看一下现在的Qt 5版本的数据:valgrind报告堆内存使用为4.9k,callgrid报告使用了大约114k内存。

这意味着Qt5少使用了20倍的内存,少用了16倍的指令来构造QCoreApplication和控制一个事件循环。

Category:

Qt 4.8 发布了

Qt has reached another important evolutionary milestone today. We are very proud to announce that Qt 4.8.0 has now been released. Many people have worked long and hard to deliver Qt 4.8.0. Today that hard work reaches final release maturity, and we are celebrating!

Category:

QRegExp将在Qt5中改进性能

在国外一篇博文中看到这么一条消息,一位英国的志愿者提出改进Qt4正则表达式的要求,并给出了Qt的正则表达式与PCRE和ICU正则的测试结果,结果显示PCRE是最快的,Qt与其相比慢了10x-30x,实在惨不忍睹。

好在这个志愿者希望能改进这一现状,也有可能,会在qt5中加入新的类获得一个效率更高的正则表达式实现。

期待一下qt5吧。

Category:

基于QtWebkit的浏览器无法显示这个汉字

本测试在linux系统运行,
使用qtwebkit的一个demo浏览器与rekonq浏览器都显示不了,显示了一个黑糊。

要说字段问题,同一系统的其他浏览器没有问题。

Taxonomy upgrade extras:

Qt的状态栏类的一点改进想法

Qt的状态栏类是QStatusBar,继承自QWidget,维护了一个比较容易用的状态栏组件。
但在实际使用中,却发现它提供的功能并不够用。例如,我希望能在状态栏的左侧永久显示一个组件,却发现不行,问题在于QStatusBar中放在左侧的组件属于其“临时状态组件”概念,如果有新消息,那么消息将会覆盖组件,不再显示。

今天仔细阅读了QStatusBar类的源代码,发现代码并不太难阅读。

先说一个这个类的实现方式,它使用一个QList存储添加到状态栏的物件,包括物件的状态和拉伸属性,状态为是否是永久物件,注意这里只是一个布尔值,两种状态。

对于非永久物件,QStatusBar实现把其放在状态栏的左侧,对于永久物件,把其放在状态栏的最右侧。

但是这里有一点问题,并不是把状态栏分为三部分,而是分为两部分,临时物件与状态消息共同使用左侧,永久物件使用右侧。也就是说放在左侧的物件无法永久显示。

对于左侧的临时状态区域,QStatusBar在显示消息时,动态计算出文本消息可使用的区域大小,包括永久物件区域左侧的所有问题。

Category:

nullfxp中的ssh反向端口代理功能模块说明

ssh的反向代理功能,可以实现基于ssh连接的安全地端口转发功能。还可用于把内网机器端口安全转接到外网服务器。

Category:

頁面

訂閱 RSS - Qt4


Main menu 2

by Dr. Radut