话不多说,运行截图如下:
代码如下:
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtWidgets>
#include <QMessageBox>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
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();
}