话不多说,运行截图如下:

代码如下:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QtWidgets>
#include <QMessageBox>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();void initWidget();public slots:void btnClicked();private:Ui::Widget *ui;QGraphicsRectItem *bkgndRect1;QGraphicsRectItem *bkgndRect2;QGraphicsRectItem *bkgndRect3;QGraphicsSimpleTextItem *text1;QGraphicsSimpleTextItem *text2;QGraphicsSimpleTextItem *text3;
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);initWidget();connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(btnClicked()));
}void Widget::initWidget(){QGraphicsScene *scene=new QGraphicsScene(0,0,600,300);ui->graphicsView->setScene(scene);QPen pen(Qt::blue);pen.setWidth(2);pen.setStyle(Qt::DashLine);bkgndRect1=new QGraphicsRectItem(0,0,150,40);bkgndRect1->setFlag(QGraphicsItem::ItemIsSelectable,true);bkgndRect1->setZValue(0);bkgndRect1->setPos(10,10);bkgndRect1->setBrush(Qt::gray);scene->addItem(bkgndRect1);bkgndRect2=new QGraphicsRectItem(0,0,150,40);bkgndRect2->setFlag(QGraphicsItem::ItemIsSelectable,true);bkgndRect2->setZValue(0);bkgndRect2->setPos(210,10);bkgndRect2->setBrush(Qt::gray);scene->addItem(bkgndRect2);bkgndRect3=new QGraphicsRectItem(0,0,150,40);bkgndRect3->setFlag(QGraphicsItem::ItemIsSelectable,true);bkgndRect3->setZValue(0);bkgndRect3->setPos(410,10);bkgndRect3->setBrush(Qt::gray);scene->addItem(bkgndRect3);text1=new QGraphicsSimpleTextItem("HOW");text1->setFlag(QGraphicsItem::ItemIsMovable,true);text1->setFlag(QGraphicsItem::ItemIsSelectable,true);text1->setZValue(1);text1->setPos(20,150);text2=new QGraphicsSimpleTextItem("AER");text2->setFlag(QGraphicsItem::ItemIsMovable,true);text2->setFlag(QGraphicsItem::ItemIsSelectable,true);text2->setZValue(1);text2->setPos(15,260);text3=new QGraphicsSimpleTextItem("YOU");text3->setFlag(QGraphicsItem::ItemIsMovable,true);text3->setFlag(QGraphicsItem::ItemIsSelectable,true);text3->setZValue(1);text3->setPos(100,195);QFont font;font.setPixelSize(32);text1->setFont(font);text2->setFont(font);text3->setFont(font);QPen textPen(Qt::blue);text1->setPen(textPen);text2->setPen(textPen);text3->setPen(textPen);scene->addItem(text1);scene->addItem(text2);scene->addItem(text3);
}void Widget::btnClicked(){int posDistance1_x=(int)text1->pos().rx()-(int)bkgndRect1->pos().rx();int posDistance1_y=(int)text1->pos().ry()-(int)bkgndRect1->pos().ry();int posDistance2_x=(int)text2->pos().rx()-(int)bkgndRect2->pos().rx();int posDistance2_y=(int)text2->pos().ry()-(int)bkgndRect2->pos().ry();int posDistance3_x=(int)text3->pos().rx()-(int)bkgndRect3->pos().rx();int posDistance3_y=(int)text3->pos().ry()-(int)bkgndRect3->pos().ry();qDebug()<<"posDistance1_x"<<posDistance1_x<<" posDistance1_y"<<posDistance1_y;if(-10<posDistance1_x&&posDistance1_x<110&&-10<posDistance1_y&&posDistance1_y<16&&-10<posDistance2_x&&posDistance2_x<110&&-10<posDistance2_y&&posDistance2_y<16&&-10<posDistance3_x&&posDistance3_x<110&&-10<posDistance3_y&&posDistance3_y<16){QMessageBox::information(this,tr("正确"),tr("答案为 How are you"));return;}QMessageBox::critical(this,tr("错误"),tr("答案错误!"));}Widget::~Widget()
{delete ui;
}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

Qt学习笔记-基于QGraphicsScene的填词游戏相关推荐

  1. Qt学习笔记-基于QGraphicsScene的打地鼠游戏

    运行截图如下: 源码工程下载地址: https://download.csdn.net/download/qq78442761/10366473 这里有几个关键点: 当继承QGraphicsScene ...

  2. Qt 学习笔记(5)绘图 五子棋游戏

    在上一篇博客C++ Qt学习笔记(4)绘图中介绍了Qt中的绘图方法,基于上一篇的博客的知识,使用QPainter设计一个五子棋的棋盘,后续会完成五子棋的游戏设计. 1. 棋盘的设计 首先需要绘制棋盘的 ...

  3. 【QT学习笔记】基于QT的天气预报

    [QT学习笔记]基于QT的天气预报 前言 那就开始吧! 先看一下效果 颜面最重要,画个UI 构造实现 怎么开始? 开始解析数据 关于城市切换 ok 最后源码献上 感谢 前言 学习qt已经有一段时间了, ...

  4. Qt学习笔记之国际化

    国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),一个应用程序的国际化就是使该应用程序可以让其他国家的用户使用的过程. 1. 相关的Qt类和AP ...

  5. QT学习笔记(八):顺序容器和关联容器

    QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...

  6. QT学习笔记之对话框

    QT学习笔记之对话框 对话框是一种用户界面(窗口),它的主要功能是输出信息和接收用户的输入.在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互. 1)       模式对话框:用户只能与 ...

  7. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  8. Qt学习笔记,Qt国际化

    Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\     ...

  9. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

最新文章

  1. 我的python学习笔记
  2. js词法作用域(静态作用域)
  3. django-5-自定义模板过滤器及标签
  4. 【网址收藏】Linux 命令分类(debian Linux)
  5. 【UOJ 92】有向图的强连通分量
  6. linux如何加载镜像,linux可以加载iso镜像文件到启动项吗
  7. js中window的属性
  8. 广州技能入户计算机证书,广州技能入户申请的条件和工种有哪些
  9. 仓库管理(WMS)系统及其组成
  10. OpenGL环境搭建指南
  11. SEO–关于如何通过利用流量精灵刷百度排名及排名原理~
  12. “快播时代”终结:清内容、关服务器!
  13. 【JavaScript】数组方法应用自测例题
  14. 走进施耐德电气无锡工厂,见证自动化研发中心开幕
  15. C语言readdir()函数:读取目录函数
  16. jq使用请求报405错误
  17. altium designer利用向导画封装库详解
  18. canvas rotate() 中心旋转的实际运用
  19. P4707 重返现世 扩展 MinMax 容斥+DP
  20. 作为通信的学子,怎么在深度学习领域里面发论文

热门文章

  1. C# 参考之方法参数关键字:params、ref及out
  2. 管理成本降低10%,且看制造企业如何打造“智慧供应链”
  3. 制造行业质量追溯难,看看这些一流制造企业,都怎么做质量管理?
  4. JAVA可以用来开放游戏吗?
  5. 飞鸽传书认证是互联网界具有极大声望
  6. 好男人必看!女生的30条隐私……
  7. 我没学过计算机,是怎么接了四个私活还挣了两个 iPad 的?分享一下!
  8. 学不动的前端人,该如何跟上前端技术的发展
  9. 第五节:简单又强大的数据类型:any任意值
  10. nvidia.dali:深度学习加速神器!