首先热烈庆祝关于QT学习的开篇成功。

计划QT的学习路线如下:(不错,不错,已经到一啦,毕竟已经开始了嘛,俗话说万事开头难嘛。给自己个呵呵吧)

一、QT Creator快速入门、Qt及Qt Quick开发实战精解

二、精通Qt4编程

三、C++ GUI Qt4 编程 (第二版)

四、Qt高级编程

五、C++设计模式--基于Qt4开源跨平台开发框架

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

进入本篇正题:

游戏规则:

1、随机生成1-30个灯的亮灭状态

2、玩家按下某一个灯后,两边的灯和其本身的状态会取反

3、随机生成的状态,保证可以全部按灭

4、同时给出按灭需要的最少按下次数

5、记录玩家按下的次数

自己简单总结了一下用到的知识点:

1、新建QT Widgets Application(桌面)应用程序,继承自QMainWindow类。

2、在代码中添加UI控件

QLabel* labelChoose = new QLabel(ui->centralwidget);
QComboBox *cmboxchoose = new QComboBox(ui->centralwidget);

3、使用了QComboBox控件

QComboBox *cmboxchoose = new QComboBox(ui->centralwidget);for(int i=1;i<31;i++){//添加下拉框的内容cmboxchoose->addItem(QString::number(i,10));}cmboxchoose->move(labelChoose->width()+5,0);//下拉框的位置cmboxchoose->setFont(font);//设置显示内容的字体属性//捕获下拉事件并返回index值connect(cmboxchoose,SIGNAL(currentIndexChanged(int)),this,SLOT(ChooseChanged(int)));

4、使用了QLabel

QFont font("楷体",20,75);//定义字体属性
QLabel* labelChoose = new QLabel(ui->centralwidget);
labelChoose->setText("请选择灯的数量:");//设置内容
labelChoose->setFont(font);//设置内容的字体属性
labelChoose->move(5,5);//设置位置
labelChoose->adjustSize();//根据内容自动调整控件尺寸

5、QLabel显示图片并自动缩放

//两种都可以
QPixmap pixmap("on.jpg");
//QPixmap fitpixmap = pixmap.scaled(60, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation);  // 按比例缩放
labelLights[i]->resize(60,100);
labelLights[i]->setScaledContents(true);
labelLights[i]->setPixmap(pixmap);

6、事件过滤器eventFilter的使用

bool eventFilter(QObject *obj, QEvent *event);
labelimg->installEventFilter(this);//安装事件过滤器
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{for (int i=0;i<30;i++){if(watched==labelLights[i]){if(event->type()==QEvent::MouseButtonPress){QMouseEvent *mouseevent=static_cast<QMouseEvent*>(event);if(mouseevent->button()==Qt::LeftButton){m_iYourMoveNum++;PressedLight(i);lightsState[i]=!lightsState[i];//对两边灯状态的影响if(i==0&&m_ilightNum>0){PressedLight(i+1);lightsState[i+1]=!lightsState[i+1];}else if((i==(m_ilightNum-1))&&(m_ilightNum>1)){PressedLight(i-1);lightsState[i-1]=!lightsState[i-1];}else{PressedLight(i+1);PressedLight(i-1);lightsState[i-1]=!lightsState[i-1];lightsState[i+1]=!lightsState[i+1];}//判断是否全部熄灭IsSuccess();}}return false;}}return MainWindow::eventFilter(watched,event);
}

7、QLabel的按下事件,本来也想用信号槽实现的,但是不知道为啥捕获不到

//connect(labelimg1,SIGNAL(mousePressEvent()),this,SLOT(PressedLight));//添加信号槽,为啥捕获不到呢?

写在结尾的话:

源码地址:https://download.csdn.net/download/nanfeiyannan/12257933

核心源码:https://blog.csdn.net/nanfeiyannan/article/details/104334084

有兴趣的朋友,可以继续升级成矩阵形式,而不是像我这样一条直线。

QT初尝试之熄灯游戏相关推荐

  1. 一、Qt初尝试,做一个QT计算器《QT 入门到实战》

    学习目标 了解 qt 的基本信息 了解 qt 的下载及安装 了解创建一个基本 qt 项目的流程 了解信号与槽 通过示例了解信号与槽的设置与编写 了解控件添加的方式 了解控件如何使用代码获取其文本 了解 ...

  2. Wireshark研究血族Bloodline手游聊天系统 - 初尝试

    血族Bloodline手游聊天系统的相关研究 目录 1. 介绍&起因 2. Fiddler初尝试 3. Wireshark初尝试 4. 总结 一.介绍&起因 ↶ (PS. 容我说先几句 ...

  3. Qt终极教程——用Qt编程实现中国象棋游戏(提供源代码和程序编译运行教程)

    Qt终极教程--用Qt编程实现中国象棋游戏 目录 Qt终极教程--用Qt编程实现中国象棋游戏 简介 运行可执行程序体验象棋游戏 Qt 安装 源代码的编译.运行与调试 生成预编译的可执行程序 简介 本文 ...

  4. SQLSERVER2012里的扩展事件初尝试(上)

    SQLSERVER2012里的扩展事件初尝试(上) SQLSERVER2012里的扩展事件初尝试(下) 周未看了这两篇文章: 扩展事件在Denali CTP3里的新UI(一) 扩展事件在Denali ...

  5. 【QT项目】简易五子棋游戏(人机对战)— 完整源码

    文章目录 前言 一.游戏实现效果 二.需求分析 三.解决方案 四.核心步骤 1.插入棋盘图 2.双方落子 3.输赢判定 4.重新开始 五.完整源码 1.main.cpp 2.chessboard.h ...

  6. 用Qt做的拼图小游戏

    思路:在主界面可以选择图片进行对应的拼图,把一张600*600的图片分割成3*3张200*200的九宫格图片,对每张图片进行编号,对应0~8,然后打乱顺序,用的是随机函数,然后添加鼠标过滤事件:鼠标左 ...

  7. Serverless 开发前端初尝试

    Serverless 开发前端初尝试 啥是云开发 云开发serverless是一种模式,和传统模式的区别在于开发者不用维护服务器.服务器的日常维护, 负载均衡,扩容和减容, 运维,安全,日志等都交给了 ...

  8. C++基于QT的模仿宝石迷阵游戏源码

    介绍 基于QT的模仿宝石迷阵游戏 本次项目我们使用C++语言,实现了基于QT的宝石迷阵游戏,并且接入数据库实现了登录注册和根据最高分排行的功能,为了优化用户体验,在设置界面提供声音.亮度的调整滑块和打 ...

  9. 尝试搭建webgl游戏引擎-创建正方体

    上一篇尝试搭建webgl游戏引擎-文字的创建 简单记录了一下文字和图片的创建. 顶点疑惑 文章写的道理非常的简单,但是实际开发的时候,还是有一些细节和API的要学习的. 其中有一点,我之前一直没有弄懂 ...

最新文章

  1. ​causal-learn:基于Python的因果发现算法平台
  2. NSIS安装制作程序
  3. python学习笔记-day2-dict,tuple, string常用函数
  4. python多线程队列爬虫流程图_python 多线程爬虫 队列queue问题。
  5. 如何隐藏运行 winform 程序?
  6. matlab安装好 启动总是闪退_在Ubuntu16.04下安装MATLAB2017b
  7. windows获取系统补丁+匿名管道
  8. modal组件 vue_开发一个简单的 Vue 弹窗组件
  9. Panel中加入3个 按钮,按钮上分别显示打开,关闭,返回
  10. 阶段3 1.Mybatis_09.Mybatis的多表操作_3 完成account的一对一操作-通过写account的子类方式查询...
  11. DOS批处理中对含有特殊字符的文件名的处理方法
  12. [C#]写自己的类库
  13. Wordpress中Md文章添加图片点击放大效果
  14. Windows设置自己的程序开机自动启动
  15. 树莓派4B安装WPS解决字体缺失问题
  16. 定义雇员类Employee
  17. 动画多个元素过渡 多个组件过渡 以及过渡模式
  18. 用计算机演奏的生日快乐歌,51单片机演奏音乐“祝你生日快乐”
  19. xe7 mysql_XE7Datasnap使用dbExpress连接MySQL数据库_MySQL
  20. appcomat_v7报错解决方案

热门文章

  1. 自媒体素材采集平台,素材采集方法都有这些
  2. 怎么看区块链正规项目与否,区块链投资前你应知道这三点
  3. 计算机水冷散热器上市公司,十大计算机散热器品牌,水冷散热器-CPU散热器-笔记本散热器品牌,更适合计算机散热器...
  4. 重组人碱性成纤维细胞生长因子(附文献)
  5. 20145203盖泽双 《网络对抗技术》实践七:网络欺诈技术防范
  6. 利用SUMO模拟事故
  7. 【洛谷 P5550】 Chino的数列【矩阵乘法】
  8. python画热力分布图 pil_Python画attention map与原图叠加的热力图
  9. 关于String s=1.0 转为INT
  10. 深度学习之CUDA与cuDNN