- 博客(37)
- 资源 (8)
- 收藏
- 关注
原创 Qt Testlib 测试GUI(2)
通过eventlist 模拟多个event,测试widget 对event的处理情况。class TestGui:public QObject { Q_OBJECT private slots: void testGui_data(); void testGui(); };和之前测试function的方式一样,创建testcase
2014-01-01 08:19:54 991
原创 Qt Testlib 测试GUI(1)
Qt Testlib 提供一种机制模拟native的event,发送event到GUI的widget上,测试widget对event的响应。测试QLineEdit classTestGui:public QObject { Q_OBJECT private slots: void testGui(); }; void Test
2014-01-01 07:36:49 1755
原创 Qt Testlib 基本使用 (2)
数据启动测试,在一个测试用例上添加多个数据,运行多次的测试用例。添加一组数据:QCOMPARE(QString("hello").toUpper(),QString("HELLO"));QCOMPARE(QString("Hello").toUpper(),QString("HELLO"));QCOMPARE(QString("HELLO").toUpper(),
2014-01-01 07:09:32 1556
原创 Qt Testlib 基本使用 (1)
Qt Testlib 基本功能就是测试class的功能函数。 这个class 必须继承自QObject。 包含Qt Testlib的头文件#include classTestQString:public QObject { Q_OBJECT private slots: void toUpper(); }; 使用Qt
2013-12-31 12:28:03 3027
原创 gstreamer 开发 (1)
如何使用gstreamerGstreamer 提供了一组开发多媒体应用的APIS,基于APIs 我们可以开发大量的多媒体应用。通过Gstreamer也提供了gst-launch 我们可以很简单的将gstreamer的elements串联起来,不需要些任何的code ,实现基本的多媒体功能。 Gstreamer 使用的开发语言gstreamer 通过C语言实现,主要遵循GLIB的
2013-12-24 08:41:50 859
原创 gstreamer 基本描述
gstreamer 是一个优秀的多媒体框架。目前支持的平台有:Android,iOS,Mac OS X 和 Windows.gstreamer 支持android 确实很厉害。 通过gstreamer我们可以很容易的搭建出多媒体应用程序。但是由于gstreamer的通用性,多模块等特性,通常实现一个多媒体应用也不是十分容易。同样对于嵌入式设备实现硬件的编码解码 pl
2013-12-24 07:46:34 741
原创 使用qml 实现简单的播放器(4)
最后添加一些动画效果,以及附件功能。如果感兴趣可以学习一下qml 很简单的学习,可以实现比较复杂的功能。整体的代码如下:import QtQuick 2.0import QtMultimedia 5.0Rectangle { id: playerUI width: 800 height: 600 state: "hiden
2013-12-23 16:56:18 2155
原创 使用qml 实现简单的播放器(3)
基于之前的播放器,添加获取视频,音频等信息。代码如下Column { // 基本的布局工具,将下面的文本以列表的方式显示。其中只显示了几个属性,实际上可以显示很多的属性 width: parent.width/3 height: parent.height Text {
2013-12-23 16:53:49 1290
原创 使用qml 实现简单的播放器(2)
基于之前的播放器添加一些新内容。添加一些image,显示出播放,暂停,快进,快退 等功能按键。代码如下:mport QtQuick 2.0import QtMultimedia 5.0Rectangle { id: playerUI width: 800 height: 600 color: "black" Mouse
2013-12-23 16:46:07 1597
原创 使用qml 实现简单的播放器(1)
使用qml 简单实现一个播放器。实现引用需要的模块qtquick 模块和multimedia 模块import QtQuick 2.0import QtMultimedia 5.0下面创建一个黑色的矩形区域用于显示视频,代码如下:Rectangle { id: playerUI width: 800 height: 600
2013-12-23 16:24:45 1778
原创 Qt5 设置plugin(设备)
1. Command line: ./myapp -plugin tslib:/dev/mydevice2. Environment variable: export QT_QPA_GENERIC_PLUGINS=tslib:/dev/mydevice
2013-12-18 13:49:48 2075
原创 Qt multimedia 开发方法
Qt multimedia 支持与其他模块的开发方式一样。支持widget 模式和 qml 模式开发。目前在Qt中开发的新模块都会支持 widget 和 qml 2种方式来开发。QML的开发原则是使用QML自己的语法+JS开发程序逻辑。使用QML开发对于不熟悉c++的工程师而熟悉js的程序员是个非常好的选择。QML简单好学习,几乎一周的时间就可以使用qml开发程序了。
2013-12-13 10:32:25 4271
原创 Qt Multimedia 描述
概述:Qt 通过Qt Multimedia 模块提供多媒体功能。Qt multimedia模块基于不同的平台抽象出多媒体接口来实现平台相关的特性和硬件加速。接口功能覆盖了播放视频音频,录制视频音频,其中包括多种多媒体封装格式,同样支持类似于 camera,耳机,麦克风等设备。特性:下面列举一些通过Multimedia APIs可以实现的功能:访问音频输入,输
2013-12-12 11:35:07 3585
原创 Qt Multimedia 介绍和环境搭建
Qt Multimedia 在Qt5 中发生了很大的变化,在Qt5 中针对multimedia部分做了全新的修改,使用新的digia 自己的 Qt QMultimedia 框架进行实现。主要支持的平台是 android, linux, windows。在Andorid 中Qt 通过JNI 接口实现Multimedia 功能。(如果在Android中移植了gstreamer,通过可以调用gs
2013-12-12 10:37:59 12365
原创 QML - 可视元素 Text
QML - Text 用于显示文本信息,具有只读属性。Text可以处理Html格式文本和普通文本,Text默认会尝试把所有的问题放到一行显示。我们可以通过设置width, height 属性或者设置WrapMode 来改变默认属性。下面看看他的属性信息。<!--p, li {white-space:pre-wrap}-->baseUrl :
2013-07-10 17:14:11 1017
原创 QML - 可视元素 Image
Image 和他的名字一样,在QML 中用来现实一个图片。在实现一下UI的过程中,使用贴图是最简单的方法。Qt lib 支持的静态图片格式类型,Image 都可以支持如bitmap, png, jpg, svg 等等。Image 支持大尺寸的图片,但是大尺寸的图片解码的速度和内存的使用如何平衡那,看看Image 为我们提供了那些功能。同时Image 支持加载本地图片和网络图片
2013-06-21 16:36:25 2122
原创 QML - 可视元素 Rectangle (2)
Rectangle 是qml中最基本的类型,而且我们也能看到基本上所有的qml 可视元素都是方块的,如果需要使用一个圆形或者三角形都不是很容易。在使用Rectangle 中一般都是嵌套使用各种可视元素,而且这些元素的嵌套规则与之前的widget 嵌套的规则一样,存在着父子关系。语法结构中上层的元素就是下层元素的父亲,父元素维护着子元素的生命周期。现在是一个简单的嵌套使用可视元素的例
2013-06-21 11:22:32 1606
原创 QML - 可视元素 Rectangle (1)
Rectangle 就和它的意思一样,就是画一个实心的方形,几乎所有的QML 可视元素都是一个方形,如果想做一个类似圆形,三角形或者多边形都不是特别容易。Item 是Rectangle的父类,所以Item所有的属性在Rectangle都有效,而且Rectangle 是可见的。除了Item内部的一些属性,在Rectangle 里面也有一些自己的属性:Rectangle可以具有一个边框,并
2013-06-13 12:35:00 1659
原创 QML - 可视元素类型 - item
item 本身不是一个可视类型,但是item 是所有可视元素的基类。由于item 是可视元素的基类,所以item 具有很多关于UI和输入输出的属性和方法下面一一记录<!--p, li {white-space:pre-wrap}-->activeFocus : bool 只读属性,通过activeFocus可以获取focus是否在当前的element上,如果
2013-05-28 17:26:18 1470 1
原创 QML 基础类型 vector 和 matrix
vector2D vector3D vector4D 和 matrix4x4 是QML中与opengl相关的一些基础类型。vector2D vector3D vector4D几乎具有一致的借口和函数,主要用于保存一个点的信息。matrix4x4 用来表示具有16个元素的数组,主要用来做opengl中的matrix计算,如修改坐标系,旋转,移动等操作。vector*D 常用的函数
2013-05-28 14:59:09 1844 1
原创 QML 基础类型 - font
QML 基础类型 font 主要应用在需要UI 中显示文字的时候,设置需要使用的字体,字库,和其他属性。这个是我Qt 目录下的字体文件:fixed_120_50.qpf helvetica_100_75.qpf helvetica_140_50i.qpf helvetica_180_50.qpf helvetica_240_75i.qpf helvetica_80_
2013-05-28 13:04:11 2274
原创 QML 基础类型 - color
color 是QML 中非常中的类型,用color 可以描述可见的elements的颜色信息在Qt 中使用red, green,blue, alpha 来表示一个颜色在初始化color的时候我们可以使用2种方式 #RRGGBB 和 #AARRGGBB, 每个颜色的元素占8位一个字节。在Qt 中不使用yuv 数据。下面是一个使用color的example:import Q
2013-05-24 17:18:34 866
原创 QML 基础类型 - size
size 是QML 的一个基础类型,具有 width 和 height 属性。可以用于表示图片,窗体的尺寸。使用 size。见examplesimport QtQuick 2.0Rectangle { // 基本类型,生成一个矩形 width: 360 //矩形宽 height: 360 //矩形高 color: "lightblue" //矩
2013-05-24 16:53:15 749
原创 QML 基础类型 - Rectangle
Rectangle 是QML 中使用最频繁的基础类型.当我们想定义自己的类型或者 element的时候,Rectangle 是一个很好的起点。(通过rect 做为基础)下面的example 使用rect的属性来控制 rect 的外观import QtQuick 2.0Rectangle { // 基本类型,生成一个矩形 width: 360 //矩形宽
2013-05-24 16:37:48 1134
原创 QML 基础类型 - point
QML 基础类型 pointpoint 类型是具有x, y 属性的数据结果。用于表示平面的一个点。import QtQuick 2.0Rectangle { // 基本类型,生成一个矩形 width: 360 //矩形宽 height: 360 //矩形高 color: "lightblue" //矩形内部颜色 property poin
2013-05-24 15:48:22 1784
原创 QML 基础类型 - date
Qt Quick 提供了很多的基础类型用于开发QML 应用。通过下面这条指令来倒入Qt Quick 提供的数据类型<!--p, li {white-space:pre-wrap}-->import QtQuick 2.0下面简单描述一下Qt Quick 的基础类型data - 用于处理日期操作。 需要使用如下格式用于初始化 “yyyy-mm-dd”
2013-05-24 15:36:31 1107
原创 什么是Qt Quick
Qt Quick 是开发Qml应用的标准lib。在开发qml应用时 第一行代码就是 import QtQuick.Qt Quick 为Qml应用开发提供了基本的element, qml 引擎和基本的语法支持。Quick 是 Qt UI creation Kit 的缩写,可见Qt Quick 主要就是用来开发应用的UI 程序。具体提供了哪些功能:1) canvas 开发方式与j
2013-05-24 14:01:43 929
原创 从小工到大工9
并发的问题在现代程序中是肯定会有的,如果开始的时候在设计阶段就考虑不会出现多线程可能到最后就是一个设计错误,修改起来的代价不可想象,现在的项目中就是这样,郁闷中,无法改变别人的想法。在c++的开发中,考虑使用类来避免线性调用的问题。 一般在设计的工程中都是考虑线性的,在c++可以基于oo来做,但是实际上对于人的思考方式还是很难摆脱线性思考的方式。最近看到很多soa的文章,感觉还是很
2007-08-19 13:07:00 413
原创 从小工到大工8
在写程序的时候都要使用配置来让程序更加灵活。一般来说可以将配置放在数据库中,也可以放在配置文件中。如果通过读取数据库或者配置文件来实现对启动时对系统的初始化。如果在系统运行的时候写入参数确实十分复杂,之前没有参与过在运行时修改系统参数的。真希望能看到,可能在使用微内核的情况可以使用到吧。
2007-08-19 12:57:00 404
原创 从小工到大工7
资源管理:对于一个程序最可怕的就是资源泄漏,其中最可怕的觉得是进程线程或者文件的句柄没有被回收,这样的错误对我来说真的很可怕也很难发现。之前在维护一个系统的时候,因为有人在写程序的时候使用了tmp目录,并在tmp下面 创建了文件。系统的反映时运行几天之后,系统突然无法登陆,在过一段时间系统无法提供服务。因为无法登陆服务期所以根本不知道发生了什么。使用了2天的时候和运气才发行这个错误
2007-08-18 12:13:00 452
原创 从小工到大工6
异常处理:当前的情况:在我接触的所有的c++项目中几乎没有使用过异常 。唯一一次使用异常的时候是基于occi来开发程序,因为在occi中具有异常的机制,所以无论如何都要付出检查异常的代价,所以就使用了异常,但是使用异常的时候一个很的作用其实是记录为什么出现异常进而查找错误。在occi的外面都没有处理异常,而是我将occi的异常封闭在我自己做的一个类里面。反思:一直不使用异常是因为一直有一个
2007-08-18 11:59:00 454
原创 从小工到大工5
检查函数正确性的问题:这个问题考虑了很多次,在过去写的程序里面没有统一的做法。考虑如果调用者负责输入参数的正确性,就要求接口足够简单,这样可以很容易的判断输入的正确性。而如果接口不够简单这样的假设无法成立,因为只有调用者十分熟悉接口才能正确的输入参数。反过来说这个是个矛盾,如果接口复杂是接口设计者的问题。而接口足够简单又有谁能保证哪。考虑如果接口实现者提供输入参数的检查,调用者会
2007-08-18 11:27:00 391
原创 从小工到大工4
调试:在之前的项目中,确实期限马上到期, 会具有压力,推卸责任。当出现错误,通常的一句话“这里不可能有问题”,有了这样的态度是不可取的。既然发生了就是说明确已经有了问题。要证明下的结论。反思:摆正态度,做好工作。不要假设,要证明,一般来说刚加入代码,出现问题,都会与刚刚加入的数据有直接或者间接的关系。
2007-08-12 11:17:00 390
原创 从小工到大工
正交的好处:正交很重要,如果整个系统都是正交的,那系统的错误造成的影响就会好一些。非正交的负担:通过之前的经验,当发生非正交的时候就将所有的非正交的类作为一个模块而存在,所有的东西都内聚到模块中,但是这样的设计是不对的,因为一些不相关的东西都进入都模块中,这个模块自己都无法说清楚他自己是做什么的。 正交的优势:可以将不同的模块分开,当销售软件成品时客户可以自己定制需要使
2007-08-11 11:54:00 520
原创 从小工到大工2
注意项目的大图景:关注大的图景,人和项目都一样不能因为局部的问题而放弃大局观。反思:之前因为同事们做错了一些事情,就极力的要求同事做修改.1 没有考虑为什么出现错误和修改的难度或者这到底是不是一个错误。2 没有考虑其他人的感情,一味的要求会破坏自己和同事的心情。3 应该做团队的催化剂,让所有人都凝聚起来,提供效率,这个也是员工很大的价值。
2007-08-11 11:13:00 398
原创 小工到大工1
敢于承担错误:曾经为了得到经理同事的认可而掩饰自己的错误,曾经为了让客户满意我们的产品而避开我们已知的错误。这样的情况总是发生,而在发生的时候我们又付出了很多的成本或者努力,而这样的努力是不值得推崇的。反思:因为自己想掩饰错误而给项目增加成本是不道德的。 已知的错误:已知的错误而不去修改是道德问题。当发现了一个程序错误,或者设计上的错误 而不去修改它是不道德的。这个
2007-08-11 11:05:00 438
原创 目前系统中的问题
1 计划没有起到作用,设计人员没有与程序员沟通。2 不能及时发现设计中的问题,也就是没有对设计本身做测试。3 当发现问题时没有解决,而是考虑成本放弃了,但是成本真的很高吗?如果系统问题扩展到无法控制又要如何去修改?4 虽然书写了编码规范但是由于编码规范有100页,它的价值又在那里?有人会去看他并将他应用吗?又如何记得100页的规范,将自己的习惯适应这100页的规范?5 新手太多。 6
2007-08-11 10:44:00 475
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人