Qt学习笔记-基于QGraphicsScene的填词游戏
生活随笔
收集整理的這篇文章主要介紹了
Qt学习笔记-基于QGraphicsScene的填词游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
話不多說,運行截圖如下:
代碼如下:
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_Hwidget.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的填词游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ STL vector的构造
- 下一篇: C++ opengl 天空盒的创建