当前位置: 首页 > news >正文

网站建设付费项目做网站 租服务器

网站建设付费项目,做网站 租服务器,wordpress logo 尺寸,wordpress怎么实时刷新数据用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮#xff0c;给它设置样式#xff0c;并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入… 用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮给它设置样式并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入文件 六、总结 一、项目介绍 贪吃蛇是久负盛名的游戏它也和俄罗斯⽅块扫雷等游戏位列经典游戏的⾏列。 在编程语⾔的教学中我们以贪吃蛇为例从设计到代码实现来提升编程能⼒和逻辑能⼒。它通过控制蛇头⽅向吃⻝物从⽽使得蛇变得越来越⻓。在本游戏中设置了上下左右四个⽅向键来控制蛇的移动⽅向。⻝物的产⽣是随机⽣成的当蛇每吃⼀次⻝物 就会增加⼀节⾝体同时游戏积分也会相应的加⼀。 在本游戏的设计中蛇的⾝体会越吃越⻓⾝体越⻓对应的难度就越⼤因为⼀旦蛇头和⾝体相交游戏就会结束。 本项⽬使⽤ Qt 实现⼀款简单的贪吃蛇游戏。 项目的目标 游戏大厅界面实现难度选择界面实现游戏界面实现分数记录界面实现 二、游戏大厅界面实现 2.1完成游戏大厅的背景图。 1.背景图的渲染我们通过QT的绘图事件完成 void gamehall::paintEvent(QPaintEvent *event) {//实例化一个画家QPainter paint(this);//实例化一个设备QPixmap pix(:res/game_hall.png);//进行绘画paint.drawPixmap(0,0,this-width(),this-height(),pix);}2.对我们的标题栏进行设置 //设置窗口大小this-setFixedSize(1000,800);//设置标题栏图标this-setWindowIcon(QIcon(:res/ico.png));//设置标题栏标签this-setWindowTitle(游戏大厅);2.2创建一个按钮给它设置样式并且可以跳转到别的页面 1.创建一个按钮给它设置样式 QFont font(华文行楷,25);//设置按钮QPushButton *intoBtn new QPushButton(this);intoBtn-setFont(font);intoBtn-setText(开始游戏);intoBtn-setStyleSheet(QPushButton{border:0px;});intoBtn-move(450,520); 2.创建的新页面 点击add new 3. 建立信号槽使按钮被点击后跳转界面这个跳转的界面是新创建的文件点击按钮会发出声音 //创建另一个窗口GameSelect *selectnew GameSelect();connect(intoBtn,QPushButton::clicked,[]{//关闭上个窗口this-close();//设置窗口大小select-setGeometry(this-geometry());//显示窗口select-show();//发出声音QSound::play(:res/clicked.wav);4.总代码 #include gamesnake.h #include ui_gamesnake.h #include gameselect.h #include QPainter #include QPixmap #include QIcon #include QPushButton #include QSound GameSnake::GameSnake(QWidget *parent): QWidget(parent), ui(new Ui::GameSnake) {ui-setupUi(this);//设置窗口大小this-setFixedSize(1000,800);//设置窗口图标this-setWindowIcon(QIcon(:res/ico.png));//设置窗口标签this-setWindowTitle(游戏大厅);//设置字体QFont font(华文行楷,25);//设置按钮QPushButton *intoBtn new QPushButton(this);intoBtn-setFont(font);intoBtn-setText(开始游戏);intoBtn-setStyleSheet(QPushButton{border:0px;});intoBtn-move(450,520);//创建另一个窗口GameSelect *selectnew GameSelect();connect(intoBtn,QPushButton::clicked,[]{//关闭上个窗口this-close();select-setGeometry(this-geometry());select-show();QSound::play(:res/clicked.wav);}); }GameSnake::~GameSnake() {delete ui; }void GameSnake::paintEvent(QPaintEvent *event) {//实例化一个画家QPainter paint(this);//实例化一个设备QPixmap pix(:res/game_hall.png);//进行绘画paint.drawPixmap(0,0,this-width(),this-height(),pix); }注意pro文件里的配置加上multimedai 三、难度选择界面实现 我们已经把贪吃蛇的游戏界面完成了下面就进入关卡选择界面。 在关卡选择界⾯上设置了四个游戏模式按钮分别是容易模式、正常模式、困难模式、地狱模式⼀个 “历史战绩” 按钮⼀个返回游戏⼤厅界⾯的按钮。 1. 创建按钮给它设置样式。 //容易关卡QPushButton *briefnessBtn new QPushButton(this);briefnessBtn-setStyleSheet(QPushButton{background-color:#0072C6;color: black; border:0px groove gray;border-radius:10px;padding:6px;});briefnessBtn-move(400,200);QFont font(华文行楷,25);briefnessBtn-setFont(font);briefnessBtn-setText(容易模式);如图我已经创建了5个按钮 2. 为了使第二个界面可以返回到第一个界面创建一个按钮按下按钮触发信号就可以返回第一个页面。(返回按钮) //返回按钮 QPushButton *returnBtn new QPushButton(this); returnBtn-move(850,700); returnBtn-setIcon(QIcon(:res/up.png));connect(returnBtn,QPushButton::clicked,[]{this-close();GameSnake *snake new GameSnake();snake-show();QSound::play(:res/clicked.wav);});3. 游戏选择页面跳转到游戏大厅 实现页面之间的跳转 //实现游戏房间和选择关卡切换//创建另一个窗口GameRoom *roomnew GameRoom();//创建按钮给按钮设置格式//容易关卡QPushButton *briefnessBtn new QPushButton(this);briefnessBtn-setStyleSheet(QPushButton{background-color:#0072C6;color: black; border:0px groove gray;border-radius:10px;padding:6px;});briefnessBtn-move(400,200);QFont font(华文行楷,25);briefnessBtn-setFont(font);briefnessBtn-setText(容易模式);connect(briefnessBtn,QPushButton::clicked,[]{//关闭上个窗口this-close();room-setGeometry(this-geometry());room-show();QSound::play(:res/clicked.wav);});以第一个按钮为例运行后点击简单模式效果如下(这是一个新的界面) 4. 总代码 #include gameselect.h #include QPainter #include QPixmap #include QPushButton #include gamesnake.h# #include gameroom.h #include QSound GameSelect::GameSelect(QWidget *parent) : QWidget(parent) {this-setFixedSize(1000,800);//设置窗口图标this-setWindowIcon(QIcon(:res/ico.png));//设置窗口标签this-setWindowTitle(选择大厅);//实现游戏房间和选择关卡切换//创建另一个窗口GameRoom *roomnew GameRoom();//创建按钮给按钮设置格式//容易关卡QPushButton *briefnessBtn new QPushButton(this);briefnessBtn-setStyleSheet(QPushButton{background-color:#0072C6;color: black; border:0px groove gray;border-radius:10px;padding:6px;});briefnessBtn-move(400,200);QFont font(华文行楷,25);briefnessBtn-setFont(font);briefnessBtn-setText(容易模式);connect(briefnessBtn,QPushButton::clicked,[]{//关闭上个窗口this-close();room-setGeometry(this-geometry());room-show();QSound::play(:res/clicked.wav);});//正常关卡QPushButton *normalBtn new QPushButton(this);normalBtn-setStyleSheet(QPushButton{background-color:#0072C6;color: black; border:0px groove gray;border-radius:10px;padding:6px;});normalBtn-move(400,280);QFont font1(华文行楷,25);normalBtn-setFont(font);normalBtn-setText(正常模式);connect(normalBtn,QPushButton::clicked,[]{//关闭上个窗口this-close();room-setGeometry(this-geometry());room-show();QSound::play(:res/clicked.wav);});//困难关卡QPushButton *difficultyBtn new QPushButton(this);difficultyBtn-setStyleSheet(QPushButton{background-color:#0072C6;color: black; border:0px groove gray;border-radius:10px;padding:6px;});difficultyBtn-move(400,360);QFont font2(华文行楷,25);difficultyBtn-setFont(font);difficultyBtn-setText(困难模式);connect(difficultyBtn,QPushButton::clicked,[]{//关闭上个窗口this-close();room-setGeometry(this-geometry());room-show();QSound::play(:res/clicked.wav);});//地狱关卡 QPushButton *bhellBtn new QPushButton(this); bhellBtn-setStyleSheet(QPushButton{background-color:#0072C6;color: black; border:0px groove gray;border-radius:10px;padding:6px;}); bhellBtn-move(400,440); QFont font3(华文行楷,25); bhellBtn-setFont(font); bhellBtn-setText(地狱模式); connect(bhellBtn,QPushButton::clicked,[]{//关闭上个窗口this-close();room-setGeometry(this-geometry());room-show();QSound::play(:res/clicked.wav);});//排行榜 QPushButton *ranpingBtn new QPushButton(this); ranpingBtn-setStyleSheet(QPushButton{background-color:#0072C6;color: black; border:0px groove gray;border-radius:10px;padding:6px;}); ranpingBtn-move(400,520); QFont font4(华文行楷,25); ranpingBtn-setFont(font); ranpingBtn-setText(历史战绩);//返回按钮 QPushButton *returnBtn new QPushButton(this); returnBtn-move(850,700); returnBtn-setIcon(QIcon(:res/up.png));connect(returnBtn,QPushButton::clicked,[]{this-close();GameSnake *snake new GameSnake();snake-show();QSound::play(:res/clicked.wav);}); } void GameSelect::paintEvent(QPaintEvent *event) {//设置窗口大小this-setFixedSize(1000,800);//创建绘画者QPainter paint(this);//创建画板QPixmap pix(:res/game_select.png);paint.drawPixmap(0,0,this-width(),this-height(),pix); }注意历史战绩还没有设计 四、 游戏界面实现 前两个页面已经实现完成了最后完成游戏界面我们就可以玩上自己写的游戏了。 游戏房间界⾯包含下⾯⼏个部分 • 背景图的绘制。 • 蛇的绘制、蛇的移动、判断蛇是否会撞到⾃⼰ 。 • 积分的累加和绘制 在这⾥我们要考虑⼏个⽐较核⼼的问题 怎么让蛇动起来 • 我们可以⽤⼀个链表表⽰贪吃蛇⼀个⼩⽅块表⽰蛇的⼀个节点 我们设置蛇的默认⻓度为3。 • 向上移动的逻辑就是在蛇的上⽅加⼊⼀个⼩⽅块 然后把最后⼀个⼩⽅块删除即可。 • 需要⽤到定时器Qtimer 每100 - 200ms 重新渲染。怎么判断蛇有没有吃到⻝物 • 判断蛇头和⻝物的坐标是否相交Qt 有相关的接⼝调⽤。怎么控制蛇的移动 • 借助QT的实践机制实现 重写keyPressEvent即可 在函数中监控想要的键盘事件即可 。 • 我们通过绘制四个按钮使⽤信号和槽的机制控制蛇的上、下、左、右移动⽅向。 1.先要对游戏界面进行渲染用到pixmap和painter。 void GameRoom::paintEvent(QPaintEvent *event) {qDebug(开始绘画);//创建绘画者QPainter paint(this);//创建画板,不带有参数QPixmap pix;//load方法加载资源或者数据//游戏区域pix.load(:res/game_room.png);paint.drawPixmap(0,0,800,800,pix);//控制区域pix.load(:res/bg1.png);paint.drawPixmap(800,0,201,900,pix); }2.创建一个按钮实现页面之间的跳转 //创建一个返回按钮QPushButton* returnButton new QPushButton(this);//设置位置和按钮照片returnButton-move(900,700);returnButton-setIcon(QIcon(:res/up.png));//创建信号槽connect(returnButton,QPushButton::clicked,[]{//关闭当前页面this-close();GameSelect *gameRn new GameSelect();//显示上个页面gameRn-show();QSound::play(:res/clicked.wav);});如图: 3. 对游戏房间数据结构进行封装 gameroom的头文件 #define GAMEROOM_H#include QWidget //枚举蛇的移动方向 enum class kSnakeDirect {UP 0,DOWN,LEFT,RIGHT };class GameRoom : public QWidget {Q_OBJECT public:explicit GameRoom(QWidget *parent nullptr);//重写绘画事件void paintEvent(QPaintEvent *event); private://表示蛇身体结点的宽度const int kSnakeNodeWidth 20;//表示蛇身体节点的高度const int kSnakeNodeHeight 20;//表示蛇的速度const int KDefountTimeout 100;//表示贪吃蛇的链表QListQRectF snakeList;//表示食物的结点QRectF foodRect;//表示蛇初始方向的默认值kSnakeDirect moveDirect kSnakeDirect::UP; };4.蛇移动方向的实现 注意 这⾥贪吃蛇不允许直接掉头 ⽐如当前是向上的 不能直接修改为向下。 分别声明 void moveUp();//蛇向上移动 void moveDown();//蛇向下移动 void moveLeft();//蛇向左移动 void moveRight();//蛇向右移动列如蛇向上移动的定义 void GameRoom::moveUp() {QPointF leftTop; // 左上⻆坐标QPointF rightBottom; // 右下⻆坐标auto snakeNode snakeList.front();int headX snakeNode.x();int headY snakeNode.y();// 如果上⾯剩余的空间不够放⼊⼀个新的节点, 相当于到墙边了, 要处理穿墙逻辑if(headY-kSnakeNodeWidth 0) {leftTop QPointF(headX, this-height() - kSnakeNodeHeight);} else {leftTop QPointF(headX, headY - kSnakeNodeHeight);}rightBottom leftTop QPointF(kSnakeNodeWidth, kSnakeNodeHeight);snakeList.push_front(QRectF(leftTop, rightBottom)); }5.判断游戏是否结束 贪吃蛇游戏的结束标志是自己碰到自己才算结束。 bool GameRoom::checkFail() {for(int i0;isnakeList.size();i){for(int ji1;jsnakeList.size();j){if(snakeList.at(i)snakeList.at(j)){return true;//游戏结束}}}return false;//游戏正常运行 }6.在绘图事件里把蛇绘画出来并初始化贪吃蛇 //绘制蛇蛇头蛇身蛇尾//绘制蛇头的上下左右if(moveDirectkSnakeDirect::UP){pix.load(:res/rescopy.png);//加载资源}else if(moveDirect kSnakeDirect::DOWN){pix.load(:res/rescopy1.png);//加载资源}else if(moveDirectkSnakeDirect::LEFT){pix.load(:res/rescopy 2.png);//加载资源}else{pix.load(:res/rescopy3.png);//加载资源}//获取链表的头结点auto snakeHeadNodesnakeList.front();//画家绘画给这个结点绘制pix里面的资源paint.drawPixmap(snakeHeadNode.x(),snakeHeadNode.y(),snakeHeadNode.width(),snakeHeadNode.height(),pix);//绘制蛇身pix.load(:res/rescopy 5.png);for(int i1;isnakeList.size()-1;i){auto nodesnakeList.at(i);paint.drawPixmap(node.x()2,node.y(),node.width()-3,node.height(),pix);}//绘制蛇尾auto TailNode snakeList.back();paint.drawPixmap(TailNode.x()2,TailNode.y(),TailNode.width()-3,TailNode.height(),pix);在构造函数里初始化贪吃蛇 // 初始化贪吃蛇snakeList.push_back(QRectF(this-width() * 0.5, this-height() * 0.5,kSnakeNodeWidth, kSnakeNodeHeight));moveUp();moveUp();7. 定义贪吃蛇的食物 //创建随机的食物 void GameRoom::creatNewFood() {foodRect QRectF(qrand()%(800/kSnakeNodeWidth)*kSnakeNodeWidth,qrand()%(800/kSnakeNodeHeight)*kSnakeNodeHeight,kSnakeNodeWidth,kSnakeNodeHeight); } //在绘图事件里绘制食物//绘制食物pix.load(:res/food.bmp);paint.drawPixmap(foodRect.x(),foodRect.y(),foodRect.width(),foodRect.height(),pix); 8.让贪吃蛇移动起来 定时器的是为了实现每隔⼀段时间能处理移动的逻辑并且更新绘图事件。 • ⾸先 需要判断蛇头和⻝物节点坐标是否相交 ◦ 如果相交 需要创建新的⻝物节点 并且需要更新蛇的⻓度 所以 cnt 需要 1 • 如果不相交 那么直接处理蛇的移动即可。 • 根据蛇移动⽅向 moveDirect 来处理蛇的移动 处理⽅法是在前⽅加⼀个 并且删除后⽅节点 • 重新触发绘图事件 更新渲染。 //在构造函数里编写 timer new QTimer(this);connect(timer, QTimer::timeout, this, [](){int cnt 1;// 判断是否贪吃蛇和⻝物是否相交if (snakeList.front().intersects(foodRect)) {createNewFood();cnt;//蛇吃食物的声音QSound::play(:res/eatfood.wav);}while(cnt--) {// 处理蛇的移动switch (moveDirect) {case SnakeDirect::UP:moveUp();break;case SnakeDirect::DOWN:moveDown();break;case SnakeDirect::LEFT:moveLeft();break;case SnakeDirect::RIGHT:moveRight();break;default:qDebug() ⾮法移动⽅向;break;}}// 删除最后⼀个节点snakeList.pop_back();update();});9.设置游戏开始和游戏暂停按钮 在刚进⼊游戏房间界⾯时⼀定不能点击 “退出” 按钮如果点击 “退出” 按钮那么程 序就会异常退出。点击的顺序⼀定是先点击 “开始” 按钮最后才能点击 “退出” 。 //设置开始暂停按钮QPushButton *startbtn new QPushButton(this);QPushButton *stopbtn new QPushButton(this);QFont ft(楷体, 20);//设置按钮的位置startbtn-move(860,150);stopbtn-move(860,200);//设置按钮⽂本startbtn-setText(开始);stopbtn-setText(暂停);//设置按钮样式startbtn-setStyleSheet(QPushButton{border:0px;});stopbtn-setStyleSheet(QPushButton{border:0px;});//设置按钮字体格式startbtn-setFont(ft);stopbtn-setFont(ft);//蛇移动connect(startbtn,QPushButton::clicked,this,[](){isGameStart true;timer-start(kDefountTimeout);sound new QSound(:res/Trepak.wav); //声⾳路径sound-play(); //播放sound-setLoops(-1); //循环播放});//蛇暂停connect(stopbtn,QPushButton::clicked,this,[](){isGameStart false;timer-stop();//停止工作sound-stop();//停止播放});10. 设置蛇的方向控制 //设置蛇2的移动方向QPushButton *Up new QPushButton(this);QPushButton *Down new QPushButton(this);QPushButton *Left new QPushButton(this);QPushButton *Right new QPushButton(this);Up-move(880,400);Down-move(880,480);Left-move(840,440);Right-move(920,440);Up-setStyleSheet(QPushButton{border:0px;});Up-setFont(font);Up-setText(↑);Down-setStyleSheet(QPushButton{border:0px;});Down-setFont(font);Down-setText(↓);Left-setStyleSheet(QPushButton{border:0px;});Left-setFont(font);Left-setText(←);Right-setStyleSheet(QPushButton{border:0px;});Right-setFont(font);Right-setText(→);connect(Up,QPushButton::clicked,this,[](){if(moveDirect ! kSnakeDirect::DOWN)moveDirect kSnakeDirect::UP;});connect(Down,QPushButton::clicked,this,[](){if(moveDirect ! kSnakeDirect::UP)moveDirect kSnakeDirect::DOWN;});connect(Left,QPushButton::clicked,this,[](){if(moveDirect ! kSnakeDirect::RIGHT)moveDirect kSnakeDirect::LEFT;});connect(Right,QPushButton::clicked,this,[](){if(moveDirect ! kSnakeDirect::LEFT)moveDirect kSnakeDirect::RIGHT;});我们也可以用键盘来控制蛇的方向 void GameRoom::keyPressEvent(QKeyEvent *event) {switch (event-key()) {case Qt::Key_W :case Qt::Key_Up :if(moveDirect ! kSnakeDirect::DOWN)moveDirect kSnakeDirect::UP;break;case Qt::Key_S :case Qt::Key_Down :if(moveDirect ! kSnakeDirect::UP)moveDirectkSnakeDirect::DOWN;break;case Qt::Key_D :case Qt::Key_Right :if(moveDirect ! kSnakeDirect::LEFT)moveDirectkSnakeDirect::RIGHT;break;case Qt::Key_A :case Qt::Key_Left :if(moveDirect ! kSnakeDirect::RIGHT)moveDirectkSnakeDirect::LEFT;break;//开始case Qt::Key_F :isGameStart true;timer-start(moveDefount);sound new QSound(:res/Trepak.wav); //声⾳路S径sound-play(); //播放sound-setLoops(-1); //循环播放break; // //暂停case Qt::Key_G :isGameStart false;timer-stop();//停止工作sound-stop();//停止播放break;} }11.设置游戏退出按钮并设置一个消息盒子。 //设置退出按钮,并给他设置样式QPushButton *exitBtnnew QPushButton(this);exitBtn-setText(退出);exitBtn-move(870,750);exitBtn-setFont(font);//设置消息盒子QMessageBox *msgnew QMessageBox(this);QPushButton *okBtn new QPushButton(OK);QPushButton *cancelBtn new QPushButton(cancel);msg-addButton(okBtn,QMessageBox::AcceptRole);msg-addButton(cancelBtn,QMessageBox::RejectRole);msg-setWindowTitle(退出游戏);msg-setText(确认退出游戏吗);connect(exitBtn,QPushButton::clicked,[]{//显示消息盒子msg-show();QSound::play(:res/clicked.wav);//事件轮询msg-exec();if(msg-clickedButton()okBtn){this-close();//关闭程序}else{msg-close();//关闭信息盒子}});12. 分数的绘制 //绘制分数pix.load(:res/sorce_bg.png);paint.drawPixmap(this-width()*0.85,this-height()*0.06,90,40,pix);QPen pen;pen.setColor(Qt::black);QFont font(方正舒体,22);paint.setPen(pen);paint.setFont(font);paint.drawText(this-width()*0.9,this-height()*0.1,QString(%1).arg(snakeList.size()));13.游戏失败的绘制 //绘制游戏失败效果if(checkFail()){pen.setColor(Qt::red);paint.setPen(pen);QFont font(方正舒体,50);paint.setFont(font);paint.drawText(this-width()*0.25,this-height()*0.5,QString(GAME OVER!));timer-stop();QSound::play((:res/gameover.wav));sound-stop();}14.实现4种不同游戏模式 先对各个模式的时间进行设置然后设置房间的定时器时间从而改变游戏的模式。 room-setTimer(200);//改变各个模式的速度默认值 通过默认值去改变时间从而设置游戏模式 五、在文件中写入历史战绩 通过文件的方式用来显示历史战绩 5.1 从文件里提取分数 读⽂件读取写⼊⽂件中蛇的⻓度 connect(ranpingBtn,QPushButton::clicked,[]{//创建一个窗口控件QWidget *wGetnew QWidget();wGet-setWindowTitle(历史战绩);wGet-setFixedSize(500,300);//创建一个多行输入框QTextEdit *editnew QTextEdit(wGet);edit-setFont(font);edit-setFixedSize(500,300);//打开文件,并且只能读文件要自己创建QFile file(D:/QT_creator_3_25/greedy_snake1/Snake/res/1.txt);file.open(QIODevice::ReadOnly);//文本流对象QTextStream in(file);//in.表示文件把文件里的数据按行读取并且转化为整数int datain.readLine().toInt();edit-append(得分为:);//这里需要的是QString类型,把整形转化为字符串edit-append(QString::number(data));//显示窗口wGet-show();QSound::play(:res/clicked.wav);file.close(); }); 5.2 把贪吃蛇的长度存入文件 写⽂件往⽂件中写⼊蛇的⻓度 //把分数存入文件int csnakeList.size();QFile file(D:/QT_creator_3_25/greedy_snake1/Snake/res/1.txt);if(file.open(QIODevice::Text|QIODevice::WriteOnly)){//输入文本和只写QTextStream out(file);outc;//关闭文件file.close();}最后通过黑盒测试的方法解决程序的一些问题确保程序正常运行。(解决了按左右键游戏就失败的问题解决了蛇不在窗口跑的问题) 六、总结 做完这个项目收获非常大。对qt代码的理解也更加深刻同时也了解了一点额外的知识点 注意 QPixmap中的load函数是将图片加载到缓冲区即QPixmapCache中存放图片当把第一张图片加载到缓冲区会显示图片1当加载第二张图片时缓冲区的图片1并没有被覆盖实际是缓冲区存了两张图片并显示图片2当再次加载图片1到缓冲区时这时QPixmapCache认为已经有了图片1会直接返回true缓冲区的图片排列顺序并没有发生变化固依旧显示图片2。 解决办法 1QPixmap直接定义局部变量这样每次会开辟新的缓冲区 2每次加载图片时先清空缓冲区调用QPixmapCache::clear()QPointF就是Float QPoint用法的话QPointF在浮点精度上表示平面上的点绝大部分操作都是与QPoint相类似的细微的差别在于运算符重载以及提供了QPoint与QPointF的相互转换。在Qt中QList和QVector一般获取元素都是通过 atindex 来获取得但是at获取的元素返回值是一个const 常引用也就是元素不支持改变。snakeList.front().intersects(foodRect)判断两个矩形会不会相交。QTextStream文本流对象 QTextStream out(文件指针) QTextStream in(文件指针)
http://www.dnsts.com.cn/news/57743.html

相关文章:

  • 帮我们做网站的人找不到了长沙百度开户
  • 湄潭建设局官方网站网站建设的运营计划书
  • 个人网站 免费空间免备案cdn
  • 郑州做网站大量网站被关wordpress 无标题
  • 做封面图的网站做兼职的设计网站有哪些
  • 流行的企业网站推广崇左网页设计
  • 成功的个人网站施工企业既搞建筑安装又搞建筑材料销售其应纳税种为
  • 营销导向的企业网站优化乐平城市建设局网站
  • 做游戏的网站西宁电子商务网站建设
  • 大岭山网站仿做专业郑州网站建设
  • 网站的电子手册用什么做的wordpress 4.8 en us
  • 学网站建设要什么高德导航怎么看街景地图
  • 临沂企业自助建站做网站职校选什么专业
  • 网站推广指标包括( )。主播网站建设
  • 网站建设ydwzjs做行程规划的旅行网站
  • 苏州网站建设优化任丘市网站建设
  • 网站建设游戏开发网站静态页面下载工具
  • 网站 被攻击_主业篡改 被黑了 织梦做的站便宜建网站
  • 网站备案 湖北个人信息查询
  • 做那个男女的视频网站怎么打广告宣传自己的产品
  • 有做网站赚钱的吗商务网站建设项目的技术可行性
  • 深圳外贸公司网站建设公司排名网站框架是谁做
  • 网站制作方案包含哪些内容wordpress 分类目录排序
  • c 网站建设可视化实现广州官网建站
  • 长治建立公司网站的步骤招标
  • 做暧昧网站石家庄业之峰装饰公司怎么样
  • 一个空间怎么做多个网站做视频解析网站是犯法的么
  • 如何做和别人一样的网站可以看地图实景的软件不要钱的
  • 做网站利润网站建设阿胶膏的作用
  • sns社交网站开发jquery制作简单的网页