Jump to Navigation

Welcome!

  NullGet是使用Qt编写的,运行于多种平台的GUI界面的多线程多协议断点续传下载软件。  使用NullGet可以轻松下载网络的多种协议的数据流,加快下载速度,支持断点续传,目前支持的协议有:HTTP,HTTPS,FTP,MMS,RTSP。而且它能运行于当前大多数流行的操作系统,包括Windows,Linux,FreeBSD等。     下载NullGet

  NullFXP 是一个基于Qt 4 开发的SFTP/FTP 客户端软件。目前已经实现基本的多文件上下传功能。详细信息查看本站项目说明页面。     下载nullfxp

  我们的目标是打造一个开源的,跨平台的,多线程的,运行稳定的下载软件,另一个就是整理Qt库开发跨平台GUI应用程序的相关资料。欢迎各位朋友对本站开源项目提供意见及建议,欢迎有兴趣的朋友参与本站开源项目,请联系 drswinghead at gmail dot com

第8章 2D和3D图象

  • 使用QPainter进行绘图
  • 绘图器变换
  • 使用QImage的质量渲染
  • 打印
  • OpenGL图象
  •        Qt的2D图象引擎是基于QPainter类的。QPainter可绘制几何形状(点,线,矩形,椭圆,弧,弦,饼图,多边形,和贝赛尔曲线),还有pixmap,图象和文本。此外,QPainter还支持许多高级功能如抗钜齿(对文本或者图形边缘),alpha混合,坡度填充工矢量路径。QPainter还支持变换,它使得绘制分辨率独立的2D图象成为可能。
           QPainter可用于在一个“绘图设备“绘图,如QWidget,Qpixmap或者QImage。它在我们编写带有自己的外观的自定义物件或者自定义项类时非常有用。QPainter还能用于连接Qprinter执行打印和生成PDF文档。这意味着我们能经常使用相同的代码在屏幕上显示数据和生成打印报告。
           QPainter的另一选择是使用OpenGL。OpenGL是一种绘制2D和3D图象的标准库。Qt 的OpenGL模块使得把OpenGL整合到Qt程序中变得非常容易。

    Category:

    在密集处理过程中保持响应

           当我们调用QApplication::exec()时,我们就启动了Qt的事件循环。Qt在启动的时候抛出几个显示以及绘制物件的事件。在这之后,事件循环就不停运行,不断地检查中否有什么事件发生并把这些事件分发到程序的QObject。
           当一个事件正在处理过程中,其他事件可能产生并追加到Qt的事件队列中。如果我们花费太多的时间处理特定的事件,用户界面可能会变得无法响应。例如,在程序把文件保存到磁盘上时任何窗口系统生成的事件将不能被处理,直到该文件保存完成。在保存过程中,程序不能响应窗口系统的请求来重绘它自己。
           一种解决方法是使用多线程:一个用于程序的用户界面的线程和另一个用于执行保存(或者任何其他耗时的操作)的线程。这样,程序的用户界面在保存文件的过程中依旧能保持响应。我们将在第18章中看如何实现它。
           一种的解决方法是在文件保存代码中频繁调用QApplication::processEvents()。该函数告诉Qt处理任何未决的事件,然后再把控制返回给调用者。实际上,QApplication::exec()只比一个在while循环中的processEvents()函数调用强一点。

    Category:

    安装事件过滤器

           Qt的事件模型的一个强大的功能是一个QObject实例能够在另一个QObject实例看到它的事件前监控它的事件。
           我们假设我们有一个给几个QLineEidt组成的CustomerInfoDialog物件,我们希望使用安全可靠键把焦点从一个移动到下一个QLineEdit上。这一非标准的行为可能对使用都经过良好训练的内部程序非常合适。一个直接的解决方法是创建QLineEdit的子类并重新实现keyPressEvent()来调用 docusNextChild(),代码如下所示:

    Category:

    重新实现事件处理器

          在Qt中,一个事件是继承自QEvent的对象。Qt处理了100多种事件,每一种通过一个枚举值标识。例如,对于鼠标按键事件QEvent::type()返回QEvent::MouseButtonPress。

          许多事件类型需要比存储在普通QEvent对象中更多的信息。例如,鼠标事件需要存储是哪个按键触发的事件,以及在事件发现时鼠标的位置在哪。这些附加的信息被存储在专门的QEvent的子类中,如 QMouseEvent。

          事件通过他们的从 QObject继承来的event()函数通知给其他对象。在QWidget中的event()实现传递了大多数普通类型的事件给特定的事件处理器,如mousePressEvent(), keyPress-Event(), 和 paintEvent()。

          在前面章节中实现MainWindow, IconEditor, 和 Plotter的时候,我们已经见过了许多事件处理器。在QEvent的参考手册中还列出了许多其他类型的事件,还可以创建自定义事件并自己分发这些事件。这里,我们将预览一个两个值得说明的常见事件:键盘事件和计时器事件。

    Category:

    第7章 事件处理

  • 重新实现事件处理器
  • 安装事件过滤器
  • 在集中处理过程中保持响应
  •     事件是由窗口系统或者Qt自己产生以响应不同事件。当用户按下或者翻译一个键盘键或者鼠标键时,一个键盘或者鼠标事件被生成。当窗口首次显示时,一个绘图事件被生成认告诉新的可见窗口它需要重绘自己。大多数事件被生成以响应用户的行为,但也有些,像计时器事件,是由系统独立生成的。
    当我们使用Qt编程的时候,我们几乎不需要考虑事件,因为当标志性事件发生时,Qt的物件会发射信号。当我们编写自定义物件或者我们想修改现有Qt物件的行为时事件变得非常有用。

        事件应该不会与信号冲突。有一个规则是:在使用物件的时候信号比较有用,而在实现物件的时候事件比较有用。例如,当我们使用QPushButton的时候,我们对它的clicked()信号更感兴趣而不是导致信号被发射的底层的鼠标或者键盘事件。但是如果我们在实现一个像QPushButton的类,我们就需要编写处理鼠标和键盘事件的代码并在必要的时候发射clicked()信号。

    Category:

    Vim 7.2编辑器发布

    Vim团队宣布,经过15个月的努力工作,最新Vim稳定版7.2发布了。Vim7.2修正了大量bug并更新了运行时文件,最主要的新特性在于加入对脚本浮点数的支持。另外,修正了上一版中发现多个导致崩溃和威胁安全的问题。关于此次更新的详细信息在安装完成后可以使用 ":help version-7.2"命令查看。

    Category:

    nullfxp中两个远程服务器间文件拷贝的另一方法

    目前实现的方法是在客户端同时连接到两个服务器,数据需要通过本地客户端中转

    这种方法的数据传递效率不高。

    图示:对于丙个服务器A、B,当前要从A上传递文件到B服务器上,客户端为C

    A---->C----->B

    另一种方法说明:对于同一种情况。

    C
    |
    | 控制命令
    |
    V
    A----->B

    客户端C控制数据源A,让其连接到B,并将文件传到B服务器上。

    这种方法的优点数据不需要中转,传输速度会变快。

    缺点是,C对A的控制复杂,对于可能出现的情况不好控制,并且有些服务器只开SFTP而没有SSH命令执行功能。

    Category:

    nullfxp中登陆密码的存储及使用说明

    在nullfxp中,密码需要管理及存储。

    在密码传递的时候,把密码存储在QUrl中传递的,这里会导致密码中所包含的特殊字符问题。

    因此需要在适当的时候对密码进行编码,在适当的时候进行解码。

    为了不让这个编码解码产生混乱,程序需要按照规则闭能知道什么时候需要编码、解码:

    1。保证在密码来源的地方为未编码的。会话存储必须为编码过的。

    来源只有一个是来自会话对话框.在它向外传递之前就已经编码了。

    2。在传递过程中都使用url编码的形式。像参数等。

    3。直到实现调用登陆认证代码的时候再将其转换为未编码的形式。

    也就是说在程序运行过程中没有未编码密码形式存在,未编码密码的临时变量只是为了转换为编码密码,此类的程序生命周期不应该超出函数范围。

    详细说明这个密码处理规则是因为,在前面几版本的nullfxp中,因为密码编码解码问题导致的bug反复出现,一致性不好,此文即生。

    Category:

    nullfxp模块设计系列

    在nullfxp中有许多比较独立的模块,这些独立的模块有一定的算法及实现规则,本文讲述实现这些模块时的设计思路,保证模块的功能正确,高效,简单。

    本文目标是做为设计文档的详细补充,有针对性的阐述设计文档中的一些细节。

    文本包含nullfxp设计上的一些不成熟思路的记录、整理。

    本文还涉及到Qt实践中的一些知识。

    Category:

    北京奥运开幕式几个有意思的镜头

    1. 中国台北代表团进场的时候,镜头转向主席台上的胡哥,当时胡的表情比较有意思。

    2. 冈比亚进场的时候,镜头也转了。

    3. 加拿大入场的时候,镜头转向的那个是加总理吧,此人长的的确很SHA。

    4. 还有一个是在主席台上三个领导人交头接耳的镜头,不知道在说啥。

    页面

    订阅 www.qtchina.tk RSS


    Main menu 2

    by Dr. Radut