Class 5 重用
项目:通用操作器编辑器详细需求:
1.使用QGraphicsView作为框架
2.可以加载图片
3.图片可以移动
4.图片可以旋转
5.图片可以切换
6.图片可以接受拖拽操作与点击操作,并能作出响应
7.使用XML格式将编辑好的操作器保存成配置文件
8.操作器的所有元素都为QGraphicsItem,并且在同一个树之中。
9.要对外提供操作器元素的根结点。
……
看着花费了几个小时,通过自己在程序中的操作以及对夏雪以及办公室内其他同事的询问,并且与夏雪进行了多次的讨论后才最终列出的功能需求,我苦笑了出来……
因为无论怎么看……这都不可能是一个刚刚入职,没有一丝相关经验的人能完成的工作啊!
QGraphicsView?完全没有用过啊!加载图片?谁知道Qt里面要怎么加载图片啊!还有,图片还要可以移动……旋转……切换……天啊……还要可以拖拽和点击还要有响应……喂喂喂!这么复杂的东西真的要让我这个可以说是菜鸟的家伙来完成吗?
我除了通过照抄了Qt的demo然后做了一些逻辑上的修改完成了一个文本编辑器之外,可以说根本没有过开发Qt程序的经验啊!
而这个我接下来要做的东西,根本不用想,无论是书上还是网络上都是不可能有现成的代码的吧!
于是我只能从零开始来完成这个东西啊!
我……真的……可以做到吗……
“其实,不用太过于的担心。”
就在这个时候,身旁的夏雪忽然间开口了。
“不要把它想得过于复杂了。”我侧过脸,发现夏雪正在面带笑容的看着我,“因为,你只需要把你要做的事情分成几个阶段来完成就行了。”
“分成……几个阶段?”
“对,阶段。”夏雪一边点着头,一边将身子靠了过来,然后用手指向了屏幕,指着需求中的第一项说道,“你只需要把你要做的工作细分成几个阶段就行了。对于现在的情况,就是将一个需求作为一个阶段来将其完成。”
我一边思考着夏雪的话语,一边不由自主的将视线聚焦在了夏雪那漂亮的侧脸上。
“于是,作为第一阶段,你只需要了解什么是QGraphicsView,以及这个东西要如何去使用就行了。只需要认准这一个目标,然后全身心的投入进去,不思考其它的事情,我相信一天之内你就可以掌握个差不多了。”
“一天?!”虽然因为盯着夏雪的侧脸让我有些分神,不过我依旧清楚的听到以及理解了她最后说出的那个句子的意义。
“你上午不是在环境刚刚搭建好的时候就开始尝试了吗?我可是看到你都把基本的界面给画出来了。”
我无法否认,虽然夏雪说的是事实,不过实际上那是因为用QtDesigner画一个界面过于简单了,以至于我在自学的那个时候就已经熟练掌握了而已。
“可是,我还不知道要怎么实现需求里的那些功能啊……”
“阶段!”夏雪转过了脸,盯着我强调道,“记住‘阶段’这个词。在第一阶段,你不需要知道除了第一阶的需求之外,其他需求的实现方式。明白了吗?”
虽然有些强硬以及不明所以的感觉,不过我还是让自己接受了夏雪的说法,然后点了点头。
“就是说……我现在……我接下来要做的事情就是……在一天之内掌握QGraphicsView的用法?”
“就是这样。”夏雪同样点了点头,“其它的就先不要考虑。”
“好……吧……”
“啊!对了……”夏雪刚刚将自己的身子正回去,便忽然像是想到了什么似的又将身子靠了过来,“说起来,你的简历上好像没有写你的英语过了四级呢。”
哎?为什么会突然间出现这个问题?
“呃……那个……那是因为我的确是没有过四级来着……”有些尴尬的挠了挠头,我回答道,“有……有什么影响吗……”
“唔,到没什么影响,只是因为上午的时候我发现你一直在看Qt的帮助文档,我还以为你的英语很不错呢,然后我刚刚才想起来好像你的简历并没有这么写……”夏雪略有些好奇的说道,“那么,你的真实英语水平如何呢?能看懂Qt的帮助文档吗?”
“那个……文档里的英语很简单啦……像是函数的使用什么的,类的说明什么的并没有那么复杂啦……”我笑了笑,“因为没有书,所以我自学Qt的那会儿就是看文档来学的。”
“嗯——”夏雪一边点着头一边很满意的面带笑容的说道,“如果能看懂文档的话,那一天之内掌握QGraphicsView的用法应该就没有问题了吧。”
为什么……夏雪会对我这么有信心啊……
因为无法很自信的回复夏雪对我的信任,我只好不好意思的笑了笑。
“要对自己有信心啊!”夏雪很显然看出了我的表情的含义,伸出手拍了拍我的肩膀,“要知道你可是我见过的唯一的一个入职一上午就能画出来一个界面的家伙啊。”
哎?!我……有这么厉害吗?!不不不……可以做到一上午就画出来一个界面什么的……那是因为我早就会了的缘故啊!而且对于操作器的编辑器来说,基本的界面布局可是简单的要死啊!谁都能在一个小时内就做出来吧!
“你要对自己有信心啊!”夏雪重复了一遍刚刚才说过的话,“不要小看自己了,你真的很厉害的。说实话我都对你有一种大材小用的预感了。”
说完,夏雪对我笑了笑,然后回到了自己的座位上去了。
我说夏雪你到底是从哪里对我产生的这么大的信心的啊……
虽然我很想问出这句话,不过最终我还是放弃了。
“对自己……有信心……”轻轻的重复了一遍夏雪的话,然后我深深地吸了一口气,缓缓的呼了出来。
好吧,那我就对自己……有信心一次吧!
不就是区区一个QGraphicsView的用法嘛?!看我在今天下班之前把你给搞定啊!
然后,我打开了QtAssisant(Qt的帮助程序,用于浏览Qt的帮助文档),输入了QGraphicsView这个关键字,打开了这个类的说明文档。
无视了开头的一大堆的函数说明,直接向下查找例子。
因为根据之前自学时的经验,文档的之中如果存在例子的话,往往就是最最基本的用法。
然后我找到了。
的确是最最简单的用法了,而且只有四句话:
QGraphicsScenescene;
scene.addText("Helloworld!");
QGraphicsViewview(&scene);
view.show();
等等……
大眼扫过之后,我呆住了。
这……
这也太简单了吧!!!!!!!!
这个东西……真的就是这么简单吗?
不……不对,再次看了一番,我发觉这个例子只是说明了如何输出一行文字……并没有更复杂用法的示例。
不过没有关系……既然有addText这个函数用来添加文字,那么就肯定有诸如addPicture或者addImage的函数来加载图片!
于是,我再次向前查看,开始逐条的看函数说明。
可是就在我刚刚要开始找的时候,我便停住了,因为我忽然间想到了一个遗漏的地方,于是再次的看向那个仅仅只有四行的例子……
是了,根据代码的前两行来看,添加文字的函数并不是在QGraphicsView这个类里面……而是在一个叫做QGraphicScene的类里面!
也就是说,根据例子上的用法推断,想要添加文字或者图片,我应该在QGraphicsScene里面添加,然后再把QGraphicsScene放到QGraphicsView里面来显示!毕竟所谓的View,也就是“浏览”的意思嘛!QGraphicsView应该只是用于“显示”的一个类,也就是MVC里面的View(视图)。而真正的内容,也就是所谓的Model,就是QGraphicsScene!真正要添加文字或者图片的话,应该在这里面添加!
天啊,我真是太聪明了!这都被我想到了!看起来,MVC这个最最基础的概念,还是很有用的嘛!
于是我便开始键入了QGraphicsScene关键字,开始看这个类。
嗯……addText的函数找到了……然后是图片……图片……
可是,就在我斗志满满的查找了足足有一分钟后,却十分郁闷的发觉并不存在addPicture或者addImage这种函数……
为什么……为什么和说好的不一样啊!这货不可能不支持添加图片吧!
不……冷静……冷静……例子……对,看看例子!
可是,随后我的梦想再次被打破了……
从头翻到尾,在从尾翻到头,竟然……没有找到什么添加图片的例子!
导演,这和剧本上的不一样啊!
此时的我真想大吼起来,不过我还是强迫自己冷静了下来。
肯定是我过于乐观了……那么,就这么设想一下吧:
虽然添加文字是用addText,但是并不一定保证添加图片就得是addPicture或者addImage,也许是叫做其他名字也说不定,甚至都不是用add开头,或者后面并不是图片的英文!
于是,我开始一个函数,一个函数的仔细的看了起来。
几分钟过去了,我忽然间眼睛一亮——“addPixmap”!
是了,在计算机里面,所谓的pixmap,就是“位图”的意思,而“位图”含义,最大的可能性就是图片!
好的!让我看看……这个函数接受一个……QPixmap类型的参数……
OK,让我继续看看这个QPixmap是个什么东西吧!
接着,就在我滚动了屏幕没有几下,一个列表就出现在了我的面前。
BMP,GIF,JPG,JPEG,PNG……
找到了!哈哈,这就是电脑里最最常用的图片的后缀名啊!
好的……让我看看这个QPixmap要怎么载入图片吧……
嗯……嗯……哈哈,构造函数里面可以传入一个文件名?!就是你了!
好的,那么让我来梳理一下现有的信息……
首先,QPixmap应该就是Qt里面用于加载图片的。
然后,QGraphicsScene可以通过addPixmap把QPixmap给加进去。
最终,QGraphicsView可以显示QGrahpicsScene……也就是能显示添加进去的QPixmap,也就是显示图片!
虽然不一定完全准确,不过大致就是这么一个流程了!OK,接下来,就是demo时间了!
花了大概半个小时,我终于将demo写好并编译通过了。
实际上,我做的就是将之前例子中的4行核心代码的修改成了5行……嘛,说的简单一点就是用一个图片的文件路径构造一个QPixmap对象,然后把addText改成了addPixmap并把QPixmap对象传了进去。
虽然将4行代码修改成5行并不困难……可是我却碰到了奇怪的编译问题,程序竟然编译失败了……
当然,当我最终明白过来一直编译不通过是因为我忘记添加必要的头文件和库的时候,我不禁在内心里骂自己笨了。
不过,当我看到图片终于在屏幕上正确的显示出来的时候,我还是十分满意的。因为我只用了不到一个小时,就成功的将之前我认为我根本无法完成的任务的第一步——搞清楚QGrahicsView的基本用法——给漂亮的完成了。
然而,我在内心里还是十分的清楚,这只不过是我所迈出的一小步而已。因为,接下来,我还要搞清楚如何让图片移动,旋转以及可以响应我的操作。
路,还很长。
不过,没关系。
我笑了起来。
哈哈,我明白了,我终于知道夏雪对我的信心来自哪里了……因为,我真的很强啊!
略微的活动了一下脖子,我再次平复了自己的内心,让自己从兴奋的状态中恢复了过来。
好戏才刚刚开场,我可不能兴奋过度啊!
自我暗示了一番,我立刻投入了后续的“学习”与“尝试”之中。
……
“平凡。”也不知过了多久,熟悉的声音再次把我从程序之中拉回了现实。
“嗯?”使劲的挤了挤眼,我扭过了头看向了声音来源,果真是夏雪。
“已经六点半了哦。”
“六点半?”我想了想,然后明白了过来,“下班了?”
“嗯,”夏雪点着头笑了笑,“你第一天上班,不用这么拼命吧。”
“没有啊……”我活动了以下略微僵直的脖子,“只是刚刚找到了思路,想一口气搞好就是了。”
“哦?”夏雪很好奇的将身子向我的屏幕边靠了靠,“有什么可以看到的进展吗?”
“那就看看吧。”我笑了笑,启动了程序,将我今天下午的成功展示了出来,“我已经可以把组成操作器的三张图片加载并显示了,然后,现在已经可以上下的拉动了。”
“哦?”夏雪从我手中接过了鼠标,然后亲自操作了一番,“嗯——有那么一点意思了吗!看来我对你的期望没有白费啊……搞不好我还真的是大材小用了呢……”
“没……没有那么夸张吧。”我有些不好意思的笑了笑,“其实这东西挺简单的,只是因为我之前没有做过才会错误的估计了它的难度。”
“好吧,那今天就这样吧。”夏雪站直了身子,也对这我笑道,“也许我忘了告诉你了,咱们公司五点半就下班了哦。”
“哎?”我环顾了以下四周,却发觉已经是下班时间过后一个小时的现在,办公室里却还有四五个人正在忙碌的样子。
“哎……没办法啊,活比较紧,最近大家都在自觉的加班呐。”夏雪显然注意到了我的动作和表情,“不过作为新入职的你来说加班就没有什么必要了。”
“这样啊……”我思考了一下,发觉的确从刚刚开始自己的脑子似乎开始发晕了,在状态不佳的情况下继续工作的确不是什么很效率的事情,并且自己的确没有自觉加班的必要,毕竟今天下午的进度已经远远超过了我的预期了,“那今天就这样好了。”
接下来,在我关电脑和收拾东西的时候,夏雪也开始和我闲聊了起来。
“对了,我记得你家好像是住在老城区啊。”
“是啊。”
“那很远啊,你要怎么回去呢?”
“坐公交车呗。”
“几路车?”
“72。”
“这么巧啊,”夏雪在听到我说72的时候眉头一扬,“我也做72路哦。”
“哎?”我也愣了一下,然后下意识的问道,“你该不会也住老城区吧。”
“不是不是,”夏雪一边摆手一边说到,“我72路坐到中途就到了,可是你得坐到终点站吧。对了,难得咱们坐同一趟车,要不一起回去吧。”
“行啊。”我一边收拾着东西,一边点头表示同意。
可是,就在我随口回答了以后,才忽然间意识到了我和夏雪接下来要做什么事情了——两个人一起从公司走到公交车站,然后接下来还要在坐同一趟公交车回家……
中午午饭时的记忆瞬间复苏,夏雪对我流露出的那种隐约间的好感让我一下子有些不知所措起来。
小说里的那种狗血剧情不会……真的就要发生在我的身上了吧……
今天……可是我第一天上班啊……
接下来,怀着对不知会发生什么事情的期待以及不知要如何应对的紧张感,我和夏雪一起离开了公司。
然后,在路上最初的10分钟之内,我与夏雪谁都没有开口说过话。
视线笔直向前,浑身僵硬,连呼吸都变得有些急促了。在这沉默的十分钟里,我是一直保持着这种状态。
不……说保持完全是不正确的……因为我是不自觉地就变成了这个样子。而等我意识到的自己有些不对劲时候,却发觉已经完全不知道要如何放松下来了。
我干吗要这么紧张……就是因为入职第一天就和萝莉体型的上司一同下班,而且还要做同一趟公交车?还是因为中午的时候一起吃的完全没有异常的工作餐?又或者我擅自将两者联系了起来然后得到了一个很暧昧的结论吗?
可恶……别再胡思乱想了!给我平静下来啊,我的心情!
虽然对着自己这么呐喊着,可是很显然没有什么用,因为我发觉自己依旧无法将视线移向身边的夏雪。
我这到底是怎么了……
“对了平凡,”然后,就在我内心混乱的几乎要喊出来的时候,身边夏雪忽然间开口了,“我好像还没有向你介绍过公司的情况吧。”
“呃……公司的情况?”因为话题来的过于突然,以至于我并没有第一时间理解夏雪说了什么,甚至只是匆匆向夏雪的方向撇了一眼,而后重复了她最后的话语。
“对,公司的情况,”夏雪似乎没有发觉我的异常,而是点了点头,也没有看我,继续说到,“平凡你知道我门公司的主要业务是什么吗?”
“呃……”此时的我终于回过了神,理解了夏雪的话,然后立刻回忆起了昨天刚刚看过的公司网页,“培训怎么开火车?”
“嗯……你可以这么认为……”夏雪点了点头,“不过准确说来,模拟驾驶只是我们的业务之一……或者说只是一部分罢了。”
“这样啊……”我也点了点头,装作一幅了然的样子。
“总的来说,目前我们的业务还只是围绕着模拟驾驶来展开的,”夏雪也没有在意我的反映,而是继续说道,“不过我们已经开始准备向其他方面去发展了,比如目前我们正在做的一个新项目就是CTC。”
又是不知道什么意思的三个字母的缩写?饶了我吧……虽然搞软件的接触一些英文缩写很正常,不过最近我怎么总在遇到这种事情啊……
“CTC?”不过在我郁闷了一瞬间以后便恢复了正常,然后下意识地问道,“CTC是什么?”
“调度集中控制系统。”夏雪也没任何犹豫,直接回答道。
“调度?”虽然夏雪回答的很干脆,可是我却根本没能理解她说的那句话的含义,一脸茫然的继续发问,“调度又是什么……”
“算拉,这些都是铁路上的专业知识,现在对你来说的确不好理解啊。”听到了我的问题,夏雪先是愣了一下,然后笑了,“如果你真想知道的话就会去上网查一下吧。不过以后,像这种铁路上的专业知识,肯定还会不停地遇到的。为了将来,从现在开始了解这些专业知识吧。当然,大部分都是要靠自学的。”
“明……明白了……”我无奈地笑了笑,然后点了点头。
“说到了这里,我倒是想到了一件事……”就在话题似乎要结束的时候,夏雪再一次的开口了,“我想问问你的看法。”
“关于什么的看法?”
“嗯……与其说是看法,倒不如是个项目……”夏雪斟酌了一下词语然后说道,“其实,最近我一直以来都想做一个项目,不过因为CTC的缘故被耽搁了,所以我在想是不是可以交给你来做。”
“哎?”听到夏雪的话以后我便愣住了,以至于整个身子都停在了原地。
“嗯?”夏雪似乎对我的这个反映有些意外,她停了下来将身子转了过来看着我,“怎么了?”
“项目?”我用着无法置信的口气问道,“交给我?”
“哈哈,不用担心,”夏雪立刻便明白了为何我会有这么大的反映了,“虽然说是项目……不过最终也不过是一个在公司内部使用的‘工具’罢了……根据你今天的表现,我有信心你能够升任。”
虽然已经吐槽好几遍了……不过我还是想说……你的信心是从哪里来的啊?!
“不过,你只要知道有这件事情行了,并不是说要立刻开始,毕竟现在你还有通用操作器没做完不是吗?”
“哦……”恢复了行动能力,我简单的回复了一下便沉默了,夏雪也没再说什么。
两人之间再次安静了下来。
事情有些奇怪……
是的,这个时候还看不出来夏雪对我的态度的话那我就一定就是笨蛋了。
虽然不能说是对我抱有“好感”,但是对我很满意并且很看重我这一点是毋庸置疑的了。
可是,到底……为什么……
到底是什么样的原因让夏雪对我如此的看重的?
一个只有一年工作经验的新手程序员,并且仅仅是上班的第一天,没可能立刻就被重用吧!
如果再结合着面试时的状况,那就更加的奇怪了。
一个公司,再怎么缺人,也不可能在技术岗位的招聘上如此的草率吧……四个问题,而且还有没能回答上来的,这怎么看都不可能会是面试吧!如果我是走后门过来的,那还好说,可是……我可是正大光明的投了简历的!这个叫做J.A.N.的公司,在我投出简历之前可是完全的就没有听说过啊!我要怎么才能走后门啊!
然后,现在就更加诡异了,不仅多次说对我有信心,而且竟然有想让我在已经在一个项目的情况下再给我一个项目……我可是试用期啊,才刚刚上班第一天啊!这是怎么回事,难道是我想错了?实际上对我说的“我对你有信心”,那些暧昧的情景,以及这个想要再给我一个项目来做的情况,根本就不是“看重”我?而是想要给我压力,然后让我自己辞职吗?
还是说,这一切都只不过是为试用期准备的“考验”?
不过……这么大的手笔,并且由技术主管亲自进行……怎么想都是不可能的吧!
那么……现如今我所遇到的这些状况……到底是……
沉默持续着,我与夏雪彼此都没有再说过一句话,哪怕是在坐上了公交车以后。
度日如年般的半个小时过去了,夏雪从她的位置上站了起来。
“我到了,”她笑着对我挥了挥手,“那么明天见。”
“明天见……”我也笑着挥了挥手回答道。
随着夏雪的身影从车厢内消失,一种如释重负的感觉便在瞬间从心底涌了出来。
不行,以后绝对不能再和夏雪一起下班……一同坐车了……
默默的下了这个决心之后,我先是让自己放松了一下,然后便在随后的半个小时里仔仔细细地重新整理了一遍从面试到今天所遇到的情况。
虽然根据目前所掌握的情况来看不可能知道我将面对的是什么样的状况,不过显而易见的,无论我要面对的是什么,今后的工作,绝对不可能会轻松了……
“虽然这么想,不过不管什么样的工作……都不可能很轻松的吧……”
下了公交车,在走回家的路途上,在我在经过了仔细的思考后,不禁自言自语道。
“那以后,我就只能努力了。”
毕竟,成为一名程序员,这是我一生的理想。
奋斗吧!软件工程师提示您:看后求收藏(卧龙小说网http://www.wolongxs.com),接着再看更方便。
好书推荐:《修成谪仙的我却变成了女孩子》、《拥有变性能力的我可以为所欲为》、《谁能来救救我》、《药娘日记》、《想要变成鹰的鱼》、《千反田的超高难度重生攻略》、