文档库 最新最全的文档下载
当前位置:文档库 › how to use Haru in QT

how to use Haru in QT

how to use Haru in QT
how to use Haru in QT

Part 1 prepare (1)

1. modify the D:\haru\haru\libharu\script\Makefile.msvc_dll (1)

2. make sure the path of zlib and libpng (1)

3. modify the .h file (D:\haru\haru\libharu\include\hpdf.h) (1)

Part 2 compile (2)

1. compile dll (2)

2. functions in dll (3)

3. produce demo vc project (3)

Part 3 use dll in QT (5)

1. modify .pro (5)

2. modify .h file (D:\svn0202\SDK\OfdToPdf\libharu\include\hpdf.h) (5)

3. use the functions that defined in dll (7)

Part 1 prepare

1. modify the D:\haru\haru\libharu\script\Makefile.msvc_dll

CFLAGS=/MD -nologo -O2 -Iinclude -Iwin32\include -I"$(PNG_PREFIX)"\include -I"$(ZLIB_PREFIX)"\include -DHPDF_DLL_MAKE

CFLAGS_DEMO=/MD -nologo -O2 -Iinclude -Iwin32\include -D__WIN32__ -DHPDF_DLL_MAKE

2. make sure the path of zlib and libpng

3. modify the .h file (D:\haru\haru\libharu\include\hpdf.h)

#ifndef _HPDF_H

#define _HPDF_H

#include "../win32/include/hpdf_config.h"

#include "hpdf_version.h"

//#ifdef HPDF_DLL_MAKE

# define HPDF_EXPORT(A) __declspec(dllexport) A __stdcall

//#endif /* HPDF_DLL_MAKE */

#ifdef HPDF_SHARED

#include "hpdf_consts.h"

#include "hpdf_types.h"

typedef void *HPDF_HANDLE;

typedef HPDF_HANDLE HPDF_Doc;

typedef HPDF_HANDLE HPDF_Page;

typedef HPDF_HANDLE HPDF_Pages;

typedef HPDF_HANDLE HPDF_Stream; typedef HPDF_HANDLE HPDF_Image; typedef HPDF_HANDLE HPDF_Font;

typedef HPDF_HANDLE HPDF_Outline; typedef HPDF_HANDLE HPDF_Encoder; typedef HPDF_HANDLE HPDF_Destination; typedef HPDF_HANDLE HPDF_XObject; typedef HPDF_HANDLE HPDF_Annotation; typedef HPDF_HANDLE HPDF_ExtGState; typedef HPDF_HANDLE HPDF_FontDef; typedef HPDF_HANDLE HPDF_U3D;

#else

#include "hpdf_consts.h"

#include "hpdf_doc.h"

//#include "hpdf_error.h"

#endif /* HPDF_SHARED */

#include "hpdf_error.h"

#ifdef __cplusplus

extern "C" {

#endif

HPDF_EXPORT(const char *)

HPDF_GetVersion (void);

Part 2 compile

1. compile dll

D:\haru\haru\libharu>nmake script\Makefile.msvc_dll

2. functions in dll

not _HPDF_GetVersion ,just HPDF_GetVersion

3. produce demo vc project

D:\haru>cmake -G "Visual Studio 10 2010" -DBUILD_SHARED_LIBS=ON -DHA VE_LIBZ=ON -DHA VE_LIBPNG=ON ..\libharu

4. file structure

D:.

└─haru

├─libharu

│├─cmake

││└─modules

│├─demo

││├─images

││├─mbtext

││├─arc_demo.dir

│││└─Debug

││└─ttfont_demo.dir

││└─Debug

│├─include

│├─script

│├─src

││├─CMakeFiles

││├─haru.dir

│││└─Debug

││└─Debug

│├─win32

││├─bcc32

││├─include

││├─mingw

││├─msvc

││└─Debug

││├─ZERO_CHECK

││└─ALL_BUILD

│├─CMakeFiles

││├─3.1.2

│││└─CompilerIdC

│││└─Debug

││├─CMakeTmp

││├─90a3a7a3784423fbbd4a491cf736565e ││├─a5c60af796368f76982f3752c2463f29 ││└─fc5f1befdf2049db57d3cbd8932a2ad2 │├─Debug

│└─ipch

│└─arc_demo-1510d8fc

├─libpng

│├─contrib

│└─scripts

├─zlib

│├─amiga

│├─as400

│├─msdos

│├─nintendods

│├─old

││└─os2

│├─qnx

│├─test

│├─watcom

│└─win32

└─lib

Part 3 use dll in QT

1. modify .pro

win32:CONFIG(release,debug|release):LIBS+=$$PWD/win32-msvc2010/release/libhpdf.lib else:win32:CONFIG(debug,debug|release):LIBS+=$$PWD/win32-msvc2010/debug/libhpdf.lib else:unix:LIBS+=$$PWD/win32-msvc2010/libhpdf.lib

2. modify .h file (D:\svn0202\SDK\OfdToPdf\libharu\include\hpdf.h)

#ifndef_HPDF_H

#define_HPDF_H

#include"../win32/include/hpdf_config.h"

#include"hpdf_version.h"

#ifdef forcplusplus

#ifdef HPDF_DLL_MAKE

#define HPDF_EXPORT(A)__declspec(dllexport)A__stdcall

#else

#ifdef HPDF_DLL_MAKE_CDECL

#define HPDF_EXPORT(A)__declspec(dllexport) A

#else

#ifdef HPDF_SHARED_MAKE

#define HPDF_EXPORT(A)extern A

#endif/*HPDF_SHARED_MAKE*/

#endif/*HPDF_DLL_MAKE_CDECL*/

#endif/*HPDF_DLL_MAKE*/

#ifdef HPDF_DLL

#define HPDF_SHARED

#define HPDF_EXPORT(A)__declspec(dllimport)A__stdcall

#else

#ifdef HPDF_DLL_CDECL

#define HPDF_SHARED

#define HPDF_EXPORT(A)__declspec(dllimport) A

#endif/*HPDF_DLL_CDECL*/

#endif/*HPDF_DLL*/

#endif

//#define HPDF_SHARED

//#define HPDF_EXPORT(A)__declspec(dllimport)A

//#ifdef HPDF_SHARED

//#ifndef HPDF_EXPORT

//#define HPDF_EXPORT(A)extern A

//#endif/*HPDF_EXPORT*/

//#include"hpdf_consts.h"

//#include"hpdf_types.h"

//typedef void*HPDF_HANDLE;

//typedef HPDF_HANDLE HPDF_Doc;

//typedef HPDF_HANDLE HPDF_Page;

//typedef HPDF_HANDLE HPDF_Pages;

//typedef HPDF_HANDLE HPDF_Stream;

//typedef HPDF_HANDLE HPDF_Image;

//typedef HPDF_HANDLE HPDF_Font;

//typedef HPDF_HANDLE HPDF_Outline;

//typedef HPDF_HANDLE HPDF_Encoder;

//typedef HPDF_HANDLE HPDF_Destination;

//typedef HPDF_HANDLE HPDF_XObject;

//typedef HPDF_HANDLE HPDF_Annotation;

//typedef HPDF_HANDLE HPDF_ExtGState;

//typedef HPDF_HANDLE HPDF_FontDef;

//typedef HPDF_HANDLE HPDF_U3D;

//#else

//#ifndef HPDF_EXPORT

//#define HPDF_EXPORT(A)A

//#endif/*HPDF_EXPORT*/

#define HPDF_EXPORT(A)__declspec(dllimport)A__stdcall

#include"hpdf_consts.h"

#include"hpdf_doc.h"

//#include"hpdf_error.h"

//#endif/*HPDF_SHARED*/

#include"hpdf_error.h"

//#ifdef__cplusplus

//extern"C"{

//#endif

HPDF_EXPORT(const char*)

HPDF_GetVersion(void);

HPDF_EXPORT(HPDF_Doc)

3. use the functions that defined in dll

#include"rf_app.h"

#include"rf_html.h"

//#pragma comment(lib,"libhpdf.lib")

extern"C"{

#include"libharu/include/hpdf.h"

}

jmp_buf env;

#ifdef HPDF_DLL

void__stdcall

#else

void

#endif

error_handler(HPDF_STATUS error_no,

HPDF_STATUS detail_no,

void*user_data)

{

printf("ERROR:error_no=%04X,detail_no=%u\n",(HPDF_UINT)error_no, (HPDF_UINT)detail_no);

//longjmp(env,1);

}

int main(int argc,char*argv[])

{

//

const char*page_title="Text Demo";

HPDF_Doc pdf;

HPDF_Font font;

HPDF_Page page;

char fname[256];

//const char*samp_text="abcdefgABCDEFG123!#$%&+-@?";

//const char*samp_text2="The quick brown fox jumps over the lazy dog.";

float tw;

float fsize;

int i;

int len;

float ypos;

strcpy(fname,argv[0]);

strcat(fname,".pdf");

pdf=HPDF_New(error_handler,NULL);

if(!pdf){

printf("error:cannot create PdfDoc object\n");

return1;

}

if(setjmp(env)){

HPDF_Free(pdf);

return1;

}

/*set compression mode*/

HPDF_SetCompressionMode(pdf,HPDF_COMP_ALL);

/*create default-font*/

font=HPDF_GetFont(pdf,"Helvetica",NULL);

//

CRF_App::Create();

CRF_Document*pDocument=OpenFile(L"D:/bbb.ofd");

for(int i=0;i

{

page=HPDF_AddPage(pdf);

HPDF_Page_SetFontAndSize(page,font,24);

GetPageImage(pDocument,i,1,96);

CCA_ArrayTemplatecharInfoArray=GetPageTextInfo(pDocument,i);

for(int j=0;j

{

OFDText_CharInfo charInfo=charInfoArray[j];

CCA_String str=CCA_StringConverter::unicode_to_local(&charInfo.unicode,

1);//unicode_to_utf8

//CCA_String str=CCA_StringConverter::unicode_to_utf8(&charInfo.unicode,1);

cout<

//tw=HPDF_Page_TextWidth(page,page_title);

HPDF_Page_BeginText(page);

//HPDF_Page_TextOut(page,(HPDF_Page_GetWidth(page)-tw)/2,HPDF_Page_GetHeight (page)-50,page_title);

tw+=HPDF_Page_TextWidth(page,str.GetBuffer(str.GetLength()));

HPDF_Page_TextOut(page,charInfo.origin_x

+tw,HPDF_Page_GetHeight(page)-charInfo.top,str.GetBuffer(str.GetLength()));

HPDF_Page_EndText(page);

}

/*add a new page object.*/

}

CloseFile(pDocument);

HPDF_SaveToFile(pdf,fname);

/*clean up*/

HPDF_Free(pdf);

//

CRF_App::Destroy();

return0;

}

MCreator系列教程-第七章 食物和燃料

MCreator系列教程——第七章食物和燃料 在上一章中,我们给MOD添加了工具和防具,接下来我们要继续给MOD添加一些有趣的东西——食物和燃料 这次我们要添加的有:压缩饼干(Compressed biscuits)(我承认这是苏打饼干,本 来是想做压缩饼干的!!!)和超科学煤(Super Science coal)。 我们来先做压缩饼干,首先点击New mod,选择Food[食物],然后名字输入Compressed biscuits。 点击OK进入下一步。

将材质君放进去,然后下一步。 Name 名称作用 Name in GUI 在GUI上显示的名字在GUI上显示的名字 Stack size 堆叠大小所谓的一组的最大数量Nutritional value 饱食度吃一个增加的鸡腿数量[1=半 个鸡腿] Is food of dogs?这个食物是给狗吃的吗?把这个食物给狗吃 Has effect of potion?是否拥有药水效果吃了会给予药水效果

Potion type 药水效果类型吃了给予的药水效果,需勾选 上面选项 Food animation 吃的时候的效果Eat=吃,drink=喝,声音不同。说实话看到这个食物是给狗吃的吗我突然想做一个狗饼干。 这就是我们的狗饼干……阿不!压缩饼干的设置啦。然后点击Next进入到下一步。 事件继续无视,如果要看关于事件请看扩展二,点击Next下一步。 然后设置我们的压缩饼干的合成公式。 直接弄一个无序合成也可以。

然后就完成了我们的压缩饼干的制作啦。 接下来我们开始制作我们的超科学煤。 但是如果要制作燃料,需要先制作一个物品(作为燃料),这个同学们都学过了是吧。 合成公式如上,一个超科学球+一个煤。 同理,New mob,名字,选择Fuel[燃料]

MCreator系列教程-第四章 第一个方块

o MCreator系列教程——第四章第一个方块 在上一章,我们制作了超科学锭,可是如何获取和更好的储存这个锭呢?我们需要一个矿物,本期我们就来制作超科学方块(Super Science block)和超科学矿(Super Science ore)。 首先我们需要导入材质: 然后单击New mod,选择Block[方块],然后输入名称Super Science block 注意:这个名称不能有空格,需要把名称的空格删掉 单击OK开始制作

我们看到有6个框,从红框的左边到右边分别是:左,前,右,后。上面是上,下面是下。自行发挥想象力吧。 上 左前右后 下 Name 名称作用/功能 Reader type 渲染类型不明觉厉 Don’t render as normal block 不渲染为正常块不明觉厉 Has alpha?不明不明觉厉 mX(mix X)最小X坐标调整方块的大小 mY(mix Y)最小Y坐标 mZ(mix Z)最小Z坐标 MX(max X)最大X坐标 MY(max Y)最大Y坐标 MZ(max Z)最大Z坐标 然后将材质添加进去,其他的不要动就好了,进入下一步

现在我们看到,界面被分为了4个区域。 Name 名称作用/功能 Basic properties 基本设置 Name in GUI 在GUI上显示的名称在GUI上显示的名称Hardness 硬度硬度是关于玩家挖掘速度的 重要系数[Wiki上有,泥土 =0.75,粘土块=0.9,石头 =2.25,黑曜石=50]

Resistance 抗暴度抗暴度是关于爆炸对方块影 响的重要系数[Wiki上有,] Has gravity?是否受物理效果受物理效果,沙子掉落等Creative inventory tab 创造标签创造打开背包时的分类标签Advanced properties 高级设置 Isn’t collidable?是否可以穿过?玩家可以穿过这一方块并且 可以挖掘,例如藤蔓。 Can provide power? 是否发出红石信号?发出红石信号 Light opacity 透光度透光度 Material 材质打破时发出的声音[不对题 吧] Droping properties 掉落设置 Tool able to destory it 采集需要的工具采集需要的工具 Doesn’t drop itself?不掉落它自己?让采集这个方块时掉落其他 物品或方块 Block that drops 方块掉落的东西需要其上功能开启时才能设 置方块掉落的东西[而不是它 自己] Drop amount 掉落的数量掉落的数量 Light,sound and hardness 亮度,声音和硬度 Sound on step 踩在上面发出的声音踩在上面发出的声音[可自定 义] Luminance 亮度方块发出的光[火把为15,红 石火把为7] Is unbreakable?牢不可破?让方块像基岩那样硬!Harvest level to break 打破方块的工具等级设置方块需要那个等级的工 具打破,0=手/木,1=石/金, 2=铁,3=钻石。第一个框是 最小级别,第二个框是最大级 别。

liu改udhcpc配置+根文件系统制作

基于ubuntu12.06 Mini2440 256M 试验通过2013年4月8日星期一 1、获得simple.script #解压busybox tar jxvf busybox-1.5.0.tar.ba2 mv busybox-1.5.0 busybox cd busybox #添加交叉工具链 export PATH=/usr/local/arm/3.3.2/bin:$PATH make defconfig make menuconfig #配置时,我们基于默认配置,再配置它为静态编译,安装时不要/usr路径,把Miscellaneous Utilities #下的“taskset”选项去掉,不然会出错。 #如下: Busybox setting ->builds options ->[*] build busybox as a static binary ->installitation options ->[*] don’t use /usr Miscellaneous Utilities ―> [ ] taskset 保存退出。 #编译安装 make ARCH=arm CROSS_COMPILE=arm-linux- CONFIG_PREFIX=/root/build_rootfs/rootfs all install ARCH指定平台 CROSS_COMPILE指定交叉编译 CONFIG_PRRFIX指定安装的路径 或者直接修改Makefile文件 生成的udhcpc是一个链接在上面的安装目录/all/sbin 下 此时把busybox考到根文件系统的/bin下和把udhcpc拷到根文件系统的/sbin(其实原有的根文件系统里可能已经包含了udhcpc{这样该不该都行,或许吧})开机运行/sbin 下的udhcpc就可以自动获得IP。 关键点要把busybox目录下的examples/udhcp/simple.script 脚本文件做为default.script拷贝到根文件系统的/usr/share/udhcpc/default.script。没有则自己创建。

MCreator系列教程-第九章 发布你的第一个MOD

MCreator系列教程——第九章发布你的第一个MOD 相信你已经阅读完了前面几个章节(其实我并不相信你们阅读完了前面的章节),这时候,你是不是想将你的MOD发布出去,让小伙伴们看看你的作品?答案是否定的(诶玛!别打脸)好吧,到这里,你的MOD已经初具雏形了,虽然还不够完善,不过也达到了可以发布的要求,那么本期,我们就来发布我们的第一个MOD。 首先,我们先要导出MOD: 点击右上角的红色按钮(Export to the JAR/ZIP),然后弹出选择输出目录的框。

我就放在桌面,文件名设定为SuperScience(超科学MOD),点击保存。进入下一步。接下来我们要设置的是MOD的信息 Modname是你的MOD的名字 Version是你的MOD的版本(为了防止不同版本的MOD冲突) Description是你的MOD的介绍

Author是作者 Modimage是MOD的图标 Select mods to export是选择MOD的输出部分(比如说我只想输出方块,就只输出方块)File extension是MOD导出的形式,有zip和jar之分,实际区别不大 然后点击Recompile and export开始编译和导出 然后控制台弹出,我们就静静等待编译完成。 当提示这个的时候就完成了。 注:如果提示这个但有红色警告出现,则编译出现了错误,仍然无法算编译成功,所以要找出错误并修正。 将MOD放入装着Forge的Minecraft的文件夹内,然后运行游戏。 运行成功并出现MOD的物品则视为MOD制作完成,至此你可以发布你的MOD了。 本期教程到这里就结束了,到现在,各位玩家对MCreator基础的学习已经完成,接下来,我们将进行进阶课程的学习,感谢大家的支持,我们下期再见。

MCreator系列教程-第十二章 生物群系

MCreator系列教程——第十二章生物群系 上一章我们已经制作了一个新的生物,这一章我们就来制作生物群系 点击New mod,选择Biome(生物/生态群系),名字输NewBiome OK!

然后我们就看到一棵树,好吧看那里去了! Name 功能/说明Ground block 地表方块Underground block 地下方块Generate lakes 是否生成湖泊 Tree generator - Vanilla trees - Custom tree blocks - Schematic for trees 树生成 - 默认树 - 自定义树 - Schematic的树[用MCedit获取] Custom schematic for “tree” generator 导入Schematic的“树”生成Minimal tree height 树最小的高度 Spawn vines 是否生成藤蔓 Block for vines 藤蔓方块 Block for stem 树干 Block for branch 树叶 Block for fruits 树的果实

设置完毕,Next! Name 作用/说明 Custom biome colors:Select to enable 自定义生物群系颜色Air color 空气颜色 Grass color 草颜色 Water color 水颜色 Next!

Name 作用/说明 Trees per chunk 每个区块生成的树的数量 Grass per chunk 每个区块生成的草的数量 Flowers per chunk 每个区块生成的花的数量 Mushrooms per chunk 每个区块生成的蘑菇的数量 Sand per chunk 每个区块生成的沙子的数量 Reeds per chunk 每个区块生成的甘蔗的数量 Cacti per chunk 每个区块生成的仙人掌的数量Deadbushes per chunk 每个区块生成的枯死的灌木的数量 Raining possibility (0-1) 下雨的可能性(0是不可能下雨,1是总是下 雨) Minimum height difference 最小高度差 Maximum height difference 最大高度差 Entities to spawn in this biome 能在这个生物群系生成的生物

MCreator系列教程-第十一章 生物

MCreator系列教程——第十一章生物 各位观众们大家好,今天我们要学习制作一个生物。 今天我们要制作的生物是耗子(Mouse)。贴图由于是借用别人的,所以不能发布了。 点击New mod,选择Mob(生物),名字填Mouse。 然后我们要导入材质 选择路径,然后选择

Mob texture……(生物材质)而不是GUI……(用户图形界面材质) 然后我们看到第一步 Name 名称作用 Texture file of mob 生物材质生物使用的材质 Mob model 生物模型生物使用的模型,可自定义Mob type 生物类型生物的类型 Monster - 怪物 Creature - 动物 Ambient - 中立型生物 WaterCreature - 水生动物Egg color (base,dots) 怪物蛋颜色(底色,斑点色)怪物蛋的颜色 Mob label (blank for default) 生物标签(默认空)作用未知

然后设置完毕,Next ! Name 名称 作用 Name of mob 生物名称 显示出来的生物名称 Behavioral characteristics Mob is agressive, Creature is passive mob, Flying mob is going to fly and be passive 行为特征 Mob 是积极的,Creature 是被动的生物,Flying 是会飞的生物,但是他们是被动的 生物的行为特征。 Mob 攻击型 Creature 被动型 Flying 会飞且被动型 WaterMob 水生且被动型

qt课程设计实验报告

程序设计课程设计实验报告 (qt实验报告) 信息科学与技术学院 软件三班 高文博 201005070309 2011年5月

实验1:计算当初存入本金的钱数。(12题) 1.实验目的、要求 目的: 1)熟悉qt中的常用属性; 2)熟悉vbox hbox模型及怎样根据需求设计控件,边框等; 3)熟悉各个槽函数的使用,准确的将c++语言转换成qt语言,将控件功 能与函数结合起来。 要求: 1)掌握对控件的文本色,背景色等常用属性的设置。 2)掌握对控件、边框尺寸与结构的设置 3)掌握对函数的设置 2.实验设备 笔记本电脑,已安装Qt 开发环境。 3.实验内容、步骤 ●先在vc++上进行编译。 ●应用qt3.38进行编译,运行。 实验步骤: 1)根据题目需求在草纸上画出结构图; 2)根据草图用代码设计整体框架和控件; 3)在qt上运行; 4)运行成功后根据功能添加函数; 5)在头文件中添加头文件。 6)将添加的功能函数与功能控件相连; 7)分别对每个函数进行测试; 8)将整个程序在qt运行调试; 9)运行通过后给每个函数写注释; 实验代码如下所示 A (1)主框架结构代码 #include"gwbsave.h"

GwbSave::GwbSave(QWidget*parent,const char*name):QWidget(parent,name) { //?? vBox=new QVBoxLayout(this); vBox->setMargin(5); vBox->setSpacing(5); label=new QLabel("Please input the lilv:",this,"label"); vBox->addWidget(label); //?? hBox=new QHBoxLayout(this); hBox->setMargin(5); hBox->setSpacing(5); vBox->addLayout(hBox); le1=new QLineEdit(this,"le1"); hBox->addWidget(le1); //?,?? hBox2=new QHBoxLayout(this); hBox2->setMargin(5); hBox2->setSpacing(5); vBox->addLayout(hBox2); leResult=new QLineEdit(this,"leResult"); leResult->setReadOnly(true); leResult->setPaletteBackgroundColor(Qt::gray); hBox->addWidget(leResult);

MCreator事件系列教程-第一章 事件的基础知识

MCreator事件系列教程-第一章事件的基础知识事件是一个很重要的组成部分,没有它,游戏就不会充满活力,例如我们在制作方块的结尾不是有关于事件的设定吗?事件是一种很有用的东西,我们大家一起来共同学习它。 事件分有两种类型,一种是普通事件,一种是触发事件。从时间上来分,普通事件是在触发事件发生之后才发生的,也就是说,触发事件是普通事件的前提。 看起来比较难解释,触发事件是玩家在游戏操作过程中触发到事件,那么就执行普通事件。阅读接下来的内容可以让你更好的理解事件的作用。 Name 作用 普通事件——需要一定的触发条件出发,由触发条件事件操作 Custom Code 自定义事件,如果你懂JA V A你可以自己制作事件Remove block 删除方块 Add block 添加[放置?]选定的方块 Explode 爆炸,你可以设置威力 Strike Lightning 闪电[天谴] Spawn entity 生成实体 Resize 重新调整方块大小[啥鸡巴玩意?] Print text 弹出信息 Deal damage 造成伤害 Set light value 设置亮度值 Set resistance 设置抗暴值 Play sound 播放声音 Open browser 打开浏览器 Play music 播放音乐 Spawn particle 生成粒子 Redstone power 发出或停止发出红石能量 Set time 设置时间 Set spawn 设置出生点 Variable set 设置变量 Spawn gem 生成方块 Open crafting GUI 打开GUI Achievement get 给予成就 Switch dimension for entity 传送到不同的世界 降低物品耐久 Damage Item 触发条件事件——触发普通事件的事件,重要组成部分 当方块被添加时[什么意思?] When block added When neighbor block changes 当临近的方块更新时

基于QT4_Linux多媒体播放器系统的设计与实现

第26卷第1期贵州大学学报(自然科学版) V o.l 26N o .1 2009年 2月Journa l o f G uizhou U n i ve rsity (N atura l Sc i ences)F eb .2009 文章编号 1000-5269(2009)01-0060-05 基于QT4&L inux 多媒体播放器系统的设计与实现 王 震,林小川,周运练,欧阳天立 (北京理工大学珠海学院计算机科学技术学院,珠海519085) 摘 要:采用AR M 架构的嵌入式CP U,完成了多媒体浏览器的设计与实现。首先在I ntel Xsca le PXA 270上搭建一个完整的嵌入式L i n ux 操作系统平台,包括boo tl o ader 、内核以及文件系统的裁减与移植,并且开发了相关的驱动程序,如蓝牙驱动、触摸屏驱动、矩阵键盘驱动、SD /M M C 卡的驱动以及LCD 显示屏的驱动等,用于完成系统基本的输入输出功能;然后在系统上移植了QT4用于设计应用程序和友好的GU I 界面,并在此基础上开发/移植了图象浏览、视频播放、日历时间、文本浏览等功能软件;最后设计了友好的GU I 界面,将这些软件有机的组织在一起,形成了完整的多媒体浏览器系统。 关键词:ARM;QT;多媒体浏览器;数码相框中图分类号:TP311.52 文献标识码:B 随着科技的不断发展,科技早已渗入到人们日常的生活当中,科技不仅带给人们不同程度的便利,同时也带给商家广阔的开发前景。 智能化 已经成为各种商品的发展趋势,而 智能家居 概念的出现更是一种科技发展对生活改变的一种体现。 数码相框 作为 智能家居 的一个重要组成部分,不但拥有多元化的功能,更具有把百姓生活带入 智能化 的重要意义。但是现有 数码相框 产品缺少网络通讯与智能控制功能,这样使得数码相框没有正真融入到智能家居之中。各种信号在智能家居之间的传输,和数据之间的共享变得不方便,因此,在 数码相框 的基础上, 多媒体浏览器 这个新的开发概念由此产生。 1 功能设计 多媒体浏览器系统的系统框图如图1所示 : 图1 系统框图 系统的最底层是系统层,包括各种接口部件的 驱动程序,这些驱动程序通过嵌入式L i n ux 操作系统进行调用,然后完成相应的功能,为上层的接口层和应用层提供服务。 中间的嵌入式GU I 为接口层,采用QT4作为用户GU I 的界面库。QT4是基于服务器-客户端 的一种用户界面设计中间件[1] ,提供了丰富的功能控件和精美的界面设计功能,可以便捷的设计出赏心悦目的需要功能模块。 系统的最上层就是直接面向用户的应用层。该层采用QT4设计,向用户提供了精美的用户界面,用户可以通过触摸屏方便的调用相关的功能。该层主要包含以下几种功能模块: 图片浏览功能模块:对预设目录中的图片进行解码绘图,可以单张全屏/最小查看并可对图片进行放大、缩小、翻转灯操作,同时也可以对多张幻灯播放显示。 电子书功能模块:可以显示txt 格式的文本信息,用户可以运行该功能阅读电子书籍。 多媒体功能模块:调用m player 播放器对系统内存或者U SB 接口中的外存定位对应的媒体文件,并将其解码进行播放;视频文件可以全屏播放/最小播放,音频文件可以前台播放/背景播放。 日历时钟功能模块:可以显示时间/日期,并具有记事本功能。 网页浏览功能模块:可以从将网络上下载的超文本信息,通过该功能模块的解码后正确的显示 *收稿日期:2009-02-09 作者简介:王 震(1980-),男,河南泌阳人,助教,研究方向:嵌入式系统设计与应用

MCreator系列教程-第三章 第一个物品

MCreator系列教程——第三章第一个物品 经过3章的学习,同学们已经掌握了基本的MCreator操作,那么我们就一起来制作我们自己的MOD吧,名字叫超科学MOD。今天我们就来制作我们的MOD的第一个物品。 我们先要想好这个物品的功能,这里我想的就是个锭吧,超科学锭(Super Science ingot)我们需要设计和导入物品的材质,在这里我已经弄好了: 然后单击New mod,选择Item[物品],然后输入名称Super Science ingot 注意:这个名称不能有空格,需要把名称的空格删掉 单机OK开始制作

已经导入的材质,单击材质并按Select使用。

下面的白条我们就不用管,点击Next进入下一步

Name 名称作用/功能 Name in GUI 在GUI上显示的名称不同于我们刚开始打的名字, 是直接显示给玩家看的,可以 打中文。[软件问题不给打, 后期汉化即可] Creative inventory tab 创造标签将物品分配在一个创造标签 栏。 Stack size 最大堆叠数量物品最大的堆叠数量[所谓的 一组的数量,最大64个] Enchantability 附魔在物品上附魔 Max item usage duration 物品最大使用时间耐久度,0为无限。(类型为 工具或剑时) Type of tool 工具类型当数值为X时为什么东西。 (1-物品,1.5-剑,2-工具) Item damage count 物品伤害物品攻击时所造成的伤害,0 则关闭伤害。 Can destory any block?能毁灭任何块?不明觉厉 Does item stay in crafting grid? 制作物品时的网格留下吗?不明觉厉 Spawning in chests Check ?是否能产生在箱子里?将物品生成在地牢,遗迹,废 矿等的箱子里。第一个为选择 概率(10=正常),最大和最 小堆叠大小,生成的地方。 Can be dropped as grass seed?可以作为种子掉落?打草的时候掉落,(10=正常 的种子,1=十分罕见) 设定完成,点击Next进入下一步。

基于LinuxQT图形图像课程设计

郑州科技学院QT课程设计 题目制作画图工具学生姓名 专业班级 学号 所在系 指导教师 完成时间年月日

目录 1概述 (1) 1.1项目名称 (1) 1.2 画图工具基本框架 (1) 1.3 画图工具功能介绍 (2) 1.3.1菜单 (2) 1.3.2线型选择 (3) 1.3.3画笔宽度 (3) 1.3.4画笔颜色 (3) 1.3.5清空画板 (3) 1.3.6绘制图形 (3) 1.3.7橡皮擦 (3) 1.3.8坐标定位 (3) 1.4 制作画图工具使用的编程语言 (4) 1.5 编译环境 (4) 1.6 使用QT编程语言制作画图工具的优势 (4) 1.7 项目制作过程中应用到的QT知识 (4) 1.7.1信号与槽 (4) 1.7.2对话框 (4) 1.7.3创建主窗口 (4) 1.7.4自定义窗口部件 (4) 1.7.5布局管理 (5) 1.7.6 QT中的事件机制 (5) 1.7.7二维图形的绘制 (5)

1.8 项目中建立的类 (5) 1.9 类之间的相互关系 (5) 2 总体设计 (6) 2.1 主窗口 (6) 2.1.1创建主窗口 (6) 2.1.2添加菜单 (6) 2.1.3添加子菜单 (6) 2.1.4创建状态栏 (7) 2.2悬浮窗 (7) 2.2.1线型选项 (7) 2.2.2画笔宽度调节 (8) 2.1.3画笔颜色选择 (8) 2.2.4清空画板 (9) 2.2.5绘制图形 (9) 2.2.6橡皮擦 (9) 2.3 画板 (10) 2.3.1画布的创建 (10) 2.3.2画布的颜色初始化 (10) 2.3.3画板大小 (10) 3详细设计 (10) 3.1子菜单功能的实现 (10) 3.1.1 New功能的实现 (10) 3.1.2 Open 功能的实现 (11) 3.1.3 Save 功能的实现 (11) 3.1.4 SaveAs 功能的实现 (12)

MCreator系列教程-第六章 工具与防具

MCreator系列教程——第六章工具与防具 上一期中,我们给MOD添加了合成公式。这一期,我们要为我们的MOD打造趁手的兵器。 所以这次我决定添加超科学剑/稿/斧/铲/锄/头盔/胸甲/护腿/靴子(Super Science sword/pickaxe/axe/shovel/hoe/helmet/chestplate/leggings/boots) 材质如下:以及防具材质: 好,导入物品材质和防具材质,我们就开始制作啦。 点击New mod,然后选择Tool[工具],输入名字Super Science sword 然后添加材质

Name 名称 作用 Name in GUI 在GUI 显示的名称 在GUI 显示的名称 Type 工具类型 选择工具的类型 Harvest level 工具等级 挖掘方块的重要数值 Efficiency 效率 貌似是一秒破坏的硬度 Enchantability 附魔指数 附魔时获得获得高等级的附魔的几率,金制为25,详情请看wiki 百科

Damage vs mob/animal 造成伤害造成的伤害 Number of uses 使用次数使用次数 Block that destroys 可破坏的方块必须工具类型设置为镰刀的 时候才可以使用,貌似为收割 作物的作用。 设置完毕,下一步,事件无视,下一步,合成公式。 两个超科学锭加一个铁锭就OK了。同理,剩下的超科学工具大家自己制作吧。 接下来我们就制作防具

OK下一步。 分别导入头盔,胸甲,护腿,靴子的材质。

Name 名称作用 Name of armour 护甲名字这套护甲的名字,显示在GUI 中的名字将在这套护甲名字 的后面加上头盔等 Name of texture file 护甲材质当护甲穿在身上面的时候表 现出来的材质 Maximal damage that armor 最大耐久护甲可以承受的最大耐久absorves Damage values 伤害承受数值也就是血条上面的那条铁胸 甲条,半个护甲=1护甲值。Enchantability 附魔指数附魔时获得获得高等级的附 魔的几率,金制为25,详情 请看wiki百科

MCreator系列教程-第十四章 生成建筑物

MCreator系列教程——第十四章生成建筑物 今天,我们要在我们的世界里面生成建筑,我们需要做的准备是,一个建筑的Schematic文件[注:Schematic文件是用MCedit或Worldedit裁剪出来的一个小型区域,具体方法请看MCedit的教程],今天我们要在世界里面生成一个长得跟生成建筑物一样的建筑 ,叫做Forest Temple[森林寺庙]. 照例,点击New mod,选择Structure gen[生成建筑物],名字输入ForestTemple。

Name 作用/说明 Spawn air (good for underground) 生成空气(如果你是在地下生成,不然会导 致石头填埋) Check for room before spawning (don’t check for underground) 生成前检查空间(不检查地下) Schematic file to import Select spawn air and check room before importing file if you want to define so! Schematic文件导入 如果你想自定义,在勾选生产空气和生成前检查前导入 Spawn probability (number of structures per 1000000 chunks) 生成几率(在100万区块内生成的数量) Spawn location - Groud - Air - Underground 生成位置- 地面- 天上- 地底 Spawn world type - Surface - Nether 生成的世界类型- 主世界 - 下界 Restrict spawn per block 限制生成方块 Spawn block type (if restricted) 生成方块类型[如果限制] Restrict spawn per biome 限制生成的生态群系Biome to spawn in (if restricted) 生成的生态群系[如果限制] 设置完毕。

qt根文件系统制作

Linux-2.6.31 交叉编译器版本: arm-linux-gcc 4.1.2 操作系统平台: Linux -- Red Hat 9.0 开发板平台: QT2440 使用的工具: Busybox-1.15.2 第一步: 创建根文件系统目录,主要包括以下目录: /bin,/etc,/dev,/home,/lib,/mnt,/opt,/proc,/root,/sbin,/sys,/tmp,/usr,/var. 建一个名为root 的文件夹mkdir root 在该文件夹下创建以上目录mkdir bin etc dev …………… 第二步: 获取busybox1.15.2 源码,在https://www.wendangku.net/doc/f0145447.html,/downloads/ 找到busybox-1.15.2.tar.bz2这个压缩包,下载,解压:tar xjvf busybox-1.15.2 进入源码目录,修改Makefile 第164 行,CROSS_COMPILE = arm-linux- 第190 行,ARCH = arm 执行#make menuconfig进行配置busybox 配置完后,执行#make make install 然后就会在上一级目录下生成rootfs 文件夹,里面包含几个文件夹/bin /sbin /usr linuxrc 把这些文件全部复制到刚建好的root目录下, #cp –rf * ../root 第三步: 在dev 目录下,创建两个设备节点: #mknod console c 5 1 #mknod null c 1 3 进入etc 目录,添加文件: 拷贝Busybox-1.15.2/examples/bootfloopy/etc/* 到当前目录下。 # cp –r ../../busybox-1.15.2/examples/bootfloopy/etc/* ./ 包括文件:fstab init.d inittab profile 拷贝/etc/passwd, /etc/group, /etc/shadow 到当前目录下。 # cp /etc/passwd ./ # cp /etc/group ./ # cp /etc/shadow ./ 修改inittab 文件:

如何把Qt开发的用户界面嵌入840Dsl系统中

安装Operate PP用户界面到840Dsl系统 一、相关文件 1、hmi文件 hmi文件通常是用来描述用户界面的结构以及画面间的调用关系。 2、dll文件 动态链接库dll文件是由VC项目程序编译生成,用来实现画面的结构布局以及实现相关的具体功能。dll文件仅用于840Dsl(PCU+NCU),该文件仅支持Windows系统,不支持Linux系统。 3、so文件 so文件是由VC项目程序编译生成,其作用与dll文件相同,但so文件仅用于840Dsl (TCU+NCU),该文件只支持Linux系统,不能用于Windows系统。 4、systemconfiguration.ini配置文件 该文件用于系统初始化配置信息,描述了把哪个用户界面嵌入到840D sl系统中。 5、qm文件 qm文件是用于语言切换时显示的文字与对应索引编码的对照表,通常根据需要多少语言而有多少文件。 6、png文件 在840Dsl系统中图片文件通常是采用png格式。 二、文件的制作 1、hmi与qm文件 这两个文件均需要工具进行转化生成,其中hmi文件是由项目中的xml文件转化而来,而qm文件则是由ts文件转换而来。 转化工具是slHmiConverterGui。

2、dll 文件及so 文件 这两个文件均是由VC++源程序通过编译后生成,只是dll 文件是在VC 中编译直接生成,而so 文件则需要通过Linux 编译器制作生成(如何生成so 文件请参考Build Operate PP project in Linux 文档) 3、配置文件及png 图片 配置文件在项目生成的时候就自动生成,通常不需要修改,png 图片则是直接使用。 三、文件放置目录 1、安装在840Dsl 采用TCU+NCU 文件 存放路径 2 、安装在840Dsl 采用PCU+NCU 文件 存放路径 四、查看画面 当把相关文件放到对应的目录下后,即可查看用户界面

Qt中的Makefile文件编写体会

Qt中的Makefile文件编写体会 摘要Linux编程中会用到Makefile文件来对多个文件实现联合编译以及安装、制作发布文档等,其功能强大。但是完整的Makefile文件如果完全用手工编写,复杂繁琐,基于此,本文介绍两种Makefile文件编写方法,实现基本的多文件联合编译功能。 关键词Makefile;qmake;项目文件 以C++编程为例。C编程类似。系统为RedHat Linux 7.2;桌面为KDE ;文本编辑器为kate。假定读者编写了两个文件hello.cpp, world.cpp。hello.cpp为主程序,在工作目录下建立一个新的子目录”test”,再在test下建立一个”helloworld”的子目录,这个目录将作为存放hello这个程序及其相关文件的地方: % mkdir test % cd test % mkdir helloworld % cd helloworld 将hello.cpp及world.cpp文件copy至helloworld目录下。 使用文本编辑器生成一个新文件,命名为makefile,无需加文件后缀。 新文件内容为: test: hello.o, world.o //test为我们所要生成的目标可执行文件名 g++ -o test hello.o world.o //注意该行行首并非是空格,而是制表符, //需要使用Tab键来生成。否则会报“Missing Separator”并停止 hello.o: hello.cpp g++ -Wall –c hello.cpp //该行行首是制表符 world.o: world.cpp g++ -Wall –c world.cpp //该行行首是制表符 all: test

基于QT的密码生成器设计

沈阳航空航天大学 课程设计报告 课程设计名称:嵌入式系统综合课程设计 课程设计题目:基于嵌入式Linux的密码生成器 院(系):计算机学院 专业:计算机科学与技术(嵌入式系统方向)班级: 学号: 姓名: 指导教师:周振辉 完成日期:2015年1月16日

沈阳航空航天大学课程设计报告 目录 第1章系统分析 (1) 1.1 需求分析 (1) 1.2 硬件分析 (1) 1.2.1 实验环境 (2) 1.2.2 实验具体硬件 (2) 1.3 软件分析 (3) 1.3.1 操作系统简介 (3) 1.3.2 开发技术简介 (3) 第2章系统设计 (5) 2.1 操作系统移植 (5) 2.2 系统模块设计 (5) 2.3 函数设计 (5) 2.4 关键流程 (6) 2.4.1 系统主流程 (6) 2.4.2 生成流程图 (7) 第3章系统调试及运行 (9) 3.1 调试分析 (9) 3.2 结果分析 (9) 参考文献 (11) 附录 (12)

第1章系统分析 1.1 需求分析 利用嵌入式Linux和Qt,设计出一个密码生成器软件: (1)密码包括数字,小写字母,大写字母; (2)密码必须是随机生成; (3)界面可以设置密码生成的长度以及密码的数量; (4)可以在界面上对生成的密码进行浏览; (5)利用嵌入式Linux和Qt,在ARM 9上实现。 对上面的课设内容进行分析可知以下三点: (1)必须要有两个输入控件输入密码的个数和密码的长度信息; (2)还要有一个输出控件可以输出生成的密码并在界面上显示出来; (3)对于随机生成功能,则可以借用系统的产生随机数的函数,密码当中的数字,小写字母,大写字母可以用一个字符数组把他们存放在一起,产生的随机整数作为数组的下标,把对应的数组下标内容取出来就完成了随机生成这一个功能。 1.2 硬件分析 烧写开发板及程序的步骤大体如下: (一)烧写vivi (1)把并口线插到pc机的并口,并把并口与JTAG相连,JTAG与开发板的14针JTAT口相连,打开S-2410。 (2)把整个GIVEIO目录拷贝到C:/WINDOWS下,并把该目录下的giveio.sys 文件拷贝到c:/windows/system32/drivers下。 (3)在控制面板里,选添加硬件>下一步>选-是我已经连接了此硬件>下一步>选中-添加新的硬件设备>下一步>选中安装我手动从列表选择的硬件>下一步>选择-显示所有设备>选择-从磁盘安装-浏览,指定驱动为C:\WINDOWS\GIVEIO\giveio.inf 文件,点击确定,安装好驱动。

Linux下移植步骤-qt

Fedora14移植步骤 一、交叉编译环境 1.安装arm交叉工具,解压arm-linux-gcc-4.4.3-20100728.tar.gz到根目录 tar –vxzf arm-linux-gcc-4.4.3-20100728.tar.gz -C / 2.配置arm交叉工具环境变量:使用root用户修改/etc/profile文件,添加 export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH source /etc/profile 二、U-boot编译与移植 1.解压u-boot源码:tar -vxf u-boot-2009.11.tar.bz2 2.编译u-boot :进入u-boot所在目录配置u-boot:make mini2440_config 编译u-boot:make 3.使用dnw将u-boot.bin烧写到nand flash里面 4.配置u-boot的ip地址,服务器地址,子网掩码,网关 5.配置u-boot的环境变量:setenv bootargs “noinitrd init=/linuxrc console=ttySAC0 root=/dev/nfs rw nfsroot=192.168.1.200:/opt/studyarm/rootfs ip=192.168.1.201:192.168.1.200:192.168.1.254:255.255.255.0”(具体参数值参考qt移植文档),注意,要启动,需要等到根文件系统做完。 setenv bootcmd “nand read 30008000 80000 500000;bootm 30008000” 三、配置nfs服务器和tftp服务器: nfs: 1.安装:yum install nfs* 2.配置:编辑/etc/exports,写入:/opt/studyarm/ 192.168.1.*(rw,sync,no_root_squash) 3.重启nfs服务:service nfs restart tftp: 1.关闭SELinux:打开“系统”->管理->SELinux,应用模式:disable 2.安装xinetd-2. 3.14-32.fc1 4.i686.rpm,tftp-server-0.49-6.fc14.i686.rpm(注 意,必须先安装xinetd,再安装tftp-server,双击即可安装); 3.配置tftp:修改/etc/xinetd.d/tftp文件,

MCreator编程系列教程-第二章 矿物生成

MCreator编程系列教程-第二章矿物生成 我们知道,MCreator自带的矿物生成非常鸡肋,但是这个问题怎么解决呢,我们就需要修改代码。 根据上一章,打开My Workspace 选择Sources[源代码],选择mcreator_superScienceore.java,单机Edit开始编辑

我们就往上翻,找到这段代码 public void generateSurface(World world, java.util.Random rand, int chunkX, int chunkZ){ for(int i = 0; i < 10; i++){ int randPosX = chunkX + rand.nextInt(16); int randPosY = rand.nextInt(61)+67; int randPosZ = chunkZ + rand.nextInt(16); (new WorldGenMinable(mcreator_superScienceore.block, 16)).generate(world, rand, randPosX, randPosY, randPosZ); 我们就看到这段代码,然后我们详细解释一下 for(int i = 0; i < X; i++){ 这一段,表示在一个区域内生成矿物的次数,也就是说,每次执行这段代码,就会在区块内生成一个矿脉。跟矿物的稀有度有很大的关联。 int randPosY = rand.nextInt(61)+67; 这一段的括号里面的数字代表生成的最高高度,而加号后面的代表的是生成的最低高度(new WorldGenMinable(mcreator_superScienceore.block, 16)).generate(world, rand, randPosX, randPosY, randPosZ); 这一段的数字(16)表示单个矿脉最大的矿物数量,也就是说,最大会有16个矿物连在一起的意思。 经过设置,我们的矿物就完成了,快去看看矿物有没有生成吧! 本期教程到这里就结束了,感谢大家的支持。

相关文档
相关文档 最新文档