Qt写的连连看(基础篇没涉及具体的实现)

    这篇文章主要会讲实现连连看时,需要的Qt功能点有哪些,也许后期会剔除一些,我也只是凭我经验来写所需要的Qt功能。

     布局:布局上我设置了两个widget,一个当做主窗口来使用PlayWindow,另一个作为图片的容器来使用PicFrame;主窗口中我用的是网格布局QGridLayout,涉及到的代码如下:

       载入图片时的凹凸感:这个的实现我感觉是有点别扭的,我是在图片的容器PicFrame上加了QFrame控件,然后再在QFrame上加了一个QLabel控件;而主要的凹凸感就由QFrame控件来实现,QLabel就负责载入图片。

凹凸感实现的代码如下:

前两个实现的功能与setFrameStyle是一样的,并可以在ui上进行修改;需要注意的是如果QFrame是作为容器的PicFrame控件来使用时,那么设置setFrameStyle就不会有效果;必须是子控件的QFrame才能使用setFrameStyle来实现凹凸感。

      点击事件:实现的效果是点击PicFrame控件,然后在QFrame控件上画矩形框,并且点击之后只会有一个QFrame控件上有矩形框。

     点击PicFrame控件,重画事件本来是写在这个控件中的,但由于要在QFrame控件上实现显示一个矩形框的效果,所以我把重画事件放到主窗口中的PlayWindow中实现。

PicFrame中只负责鼠标的点击与释放,并发出信号给主窗口;代码如下:

信号与槽的关联已在布局中给出。

       主窗口PlayWindow中有槽pressSlot进行响应,主要功能是把点击的PicFrame控件指针传给PlayWindow与刷新。然后刷新重画的接口paintEvent就会被调用;代码如下:

在paintEvent中注释掉的代码,各个参数的值是跟没注释掉的代码值是一样的,但不知道为什么不能正常显示矩形框。其中getFrame接口是通过ui->frame->geometry()来返回QRect

     geometry与rect的区别:rect接口在单独用PicFrame控件来重画矩形框时,画PicFrame控件是没问题的,但画QFrame控件就不行了,而用geometry来画则都可以的。原因是rect画都是从(0,0)点开始画的,就算你是在一个控件中的子控件也是从(0,0)开始的,而geometry则是相对的。

整一个实现的效果图如下

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值