admin管理员组

文章数量:1516870

qt中二维数组的使用

首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责

从文件42.train读入一个长度为dstSize*dstSize字节数据,存到一个数组psData中,这些数据全部是像素点的值,不包括文件优等帮助信息.通过qt创建一个gui工程,基类选择QWidegt,将图片显示出来。代码如下

每日一道理

青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤。

#include "widget.h"

#include "ui_widget.h"

#include

#include

typedef unsigned short WORD;

typedef unsigned char BYTE;

typedef unsigned int DWORD;

const int dstSize = 128;

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

}

Widget::~Widget()

{

delete ui;

}

void Widget::paintEvent(QPaintEvent *e)

{

QPainter paint(this);

FILE *pf = NULL;

const char * name = "42.train";

DWORD wsize = dstSize * dstSize;

BYTE * psData = (BYTE*)malloc(wsize);

if( (pf = fopen(name, "rb" )) == NULL )

{

printf( "File coulkd not be opened " );

return ;

}

DWORD *pSrc = (DWORD*)malloc(wsize*sizeof(DWORD));

int n = fread(psData, wsize, 1, pf);

if( n== 1)

{

for (unsigned int i = 0; i < wsize; ++i)

{

BYTE *pb=(BYTE *)(pSrc+i);

pSrc[i] = 0;

pb[0] = psData[i];

pb[1] = psData[i];

pb[2] = psData[i];

}

free(psData);

}

QByteArray imageByteArray = QByteArray( (const char*)pSrc, wsize*4 );

uchar* transData = (unsigned char*)imageByteArray.data();

QImage image = QImage(transData, dstSize, dstSize, QImage::Format_RGB32);

free(pSrc);

fclose(pf);

paint.drawImage(QPoint(0, 0), image);

paint.end();

}

文章结束给大家分享下程序员的一些笑话语录: 开发时间

项目经理: 如果我再给你一个人,那可以什么时候可以完工?程序员: 3个月吧!项目经理: 那给两个呢?程序员: 1个月吧!

项目经理: 那100呢?程序员: 1年吧!

项目经理: 那10000呢?程序员: 那我将永远无法完成任务.

---------------------------------

原创文章 By

文件和数据

---------------------------------

本文标签: qt中二维数组的使用