主要功能已完成
This commit is contained in:
@@ -17,12 +17,10 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
main.cpp \
|
main.cpp \
|
||||||
widget.cpp \
|
widget.cpp
|
||||||
workthread.cpp
|
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
widget.h \
|
widget.h
|
||||||
workthread.h
|
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
widget.ui
|
widget.ui
|
||||||
|
|||||||
+73
-34
@@ -5,35 +5,62 @@
|
|||||||
#include <QBrush>
|
#include <QBrush>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include "WorkThread.h"
|
|
||||||
|
|
||||||
|
|
||||||
extern care car[5][5];
|
care car[5][5];
|
||||||
extern struct touch t;
|
int car_num=0;
|
||||||
|
void car_init()
|
||||||
|
{
|
||||||
|
|
||||||
|
int car_rand_buff[26];
|
||||||
|
int car_rand_int=0;
|
||||||
|
int car_rand=0;
|
||||||
|
int while_buff=0;
|
||||||
|
car_num=0;
|
||||||
|
for(int y=0;y<5;y++)
|
||||||
|
{
|
||||||
|
for(int x=0;x<5;x++)
|
||||||
|
{
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
while_buff=0;
|
||||||
|
car_rand=(rand()%25)+1;
|
||||||
|
for(int z=0;z<car_rand_int;z++)
|
||||||
|
{
|
||||||
|
if(car_rand_buff[z]==car_rand)
|
||||||
|
{
|
||||||
|
while_buff=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}while(while_buff);
|
||||||
|
|
||||||
|
|
||||||
|
car[y][x].num=car_rand;
|
||||||
|
car[y][x].color=0xffffff;
|
||||||
|
car_rand_buff[car_rand_int]=car_rand;
|
||||||
|
car_rand_int++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Widget::Widget(QWidget *parent)
|
Widget::Widget(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
, ui(new Ui::Widget)
|
, ui(new Ui::Widget)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
QTimer *mainrun;
|
//QTimer *mainrun;
|
||||||
|
|
||||||
|
srand(time(NULL));
|
||||||
|
car_init();
|
||||||
|
|
||||||
for(int y=0;y<10;y++)
|
/*
|
||||||
{
|
|
||||||
for(int x=0;x<10;x++)
|
|
||||||
{
|
|
||||||
car[y][x].color=0xffffff;
|
|
||||||
car[y][x].num=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
mainrun = new QTimer(this);
|
mainrun = new QTimer(this);
|
||||||
connect(mainrun,&QTimer::timeout,this,&Widget::mainrun_timeout);
|
connect(mainrun,&QTimer::timeout,this,&Widget::mainrun_timeout);
|
||||||
mainrun->start(1);
|
mainrun->start(1);
|
||||||
WorkThread *workthread = new WorkThread;
|
*/
|
||||||
workthread->start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget::~Widget()
|
Widget::~Widget()
|
||||||
@@ -44,8 +71,6 @@ Widget::~Widget()
|
|||||||
void Widget::paintEvent(QPaintEvent *)
|
void Widget::paintEvent(QPaintEvent *)
|
||||||
{
|
{
|
||||||
//QPainter p(this); //方法1 创建画家对象 并指定绘图设备
|
//QPainter p(this); //方法1 创建画家对象 并指定绘图设备
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*方法2 创建画家对象
|
*方法2 创建画家对象
|
||||||
*通过bggin指定绘图设备
|
*通过bggin指定绘图设备
|
||||||
@@ -60,23 +85,11 @@ void Widget::paintEvent(QPaintEvent *)
|
|||||||
//定义画笔
|
//定义画笔
|
||||||
QPen pen;
|
QPen pen;
|
||||||
QBrush brush;//创建笔刷
|
QBrush brush;//创建笔刷
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pen.setWidth(1);//设置线宽
|
pen.setWidth(1);//设置线宽
|
||||||
pen.setColor(QColor(28,28,28)); //常用颜色
|
pen.setColor(QColor(28,28,28)); //常用颜色
|
||||||
pen.setStyle(Qt::SolidLine); //设置风格
|
pen.setStyle(Qt::SolidLine); //设置风格
|
||||||
p.setPen(pen); //将画笔给画家
|
p.setPen(pen); //将画笔给画家
|
||||||
|
|
||||||
brush.setStyle(Qt::SolidPattern);//设定笔刷样式
|
brush.setStyle(Qt::SolidPattern);//设定笔刷样式
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for(int y=0;y<5;y++)
|
for(int y=0;y<5;y++)
|
||||||
{
|
{
|
||||||
for(int x=0;x<5;x++)
|
for(int x=0;x<5;x++)
|
||||||
@@ -100,17 +113,43 @@ void Widget::paintEvent(QPaintEvent *)
|
|||||||
void Widget::mousePressEvent(QMouseEvent *event)
|
void Widget::mousePressEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
int y,x;
|
||||||
if (event->button() == Qt::LeftButton)
|
if (event->button() == Qt::LeftButton)
|
||||||
{
|
{
|
||||||
t.flag=1;
|
if(event->x()>car_size*5||event->y()>car_size*5)
|
||||||
t.x=event->x();
|
{
|
||||||
t.y=event->y();
|
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
y=(event->y()/car_size);
|
||||||
|
x=(event->x()/car_size);
|
||||||
|
if(car[y][x].num==car_num+1)
|
||||||
|
{
|
||||||
|
car[y][x].color=0x00db00;
|
||||||
|
car_num++;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
if(car[y][x].color==0xffffff)
|
||||||
|
{
|
||||||
|
car[y][x].color=0xea0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget::update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Widget::mainrun_timeout()
|
void Widget::mainrun_timeout()
|
||||||
{
|
{
|
||||||
|
//Widget::update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Widget::on_pushButton_clicked()
|
||||||
|
{
|
||||||
|
car_init();
|
||||||
Widget::update();
|
Widget::update();
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-1
@@ -6,7 +6,7 @@
|
|||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class Widget; }
|
namespace Ui { class Widget; }
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
#define car_size 110
|
||||||
class Widget : public QWidget
|
class Widget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -21,7 +21,20 @@ protected:
|
|||||||
//绘图事件内部会自动调用,窗口需要重绘的时候(状态改变)
|
//绘图事件内部会自动调用,窗口需要重绘的时候(状态改变)
|
||||||
void paintEvent(QPaintEvent *);
|
void paintEvent(QPaintEvent *);
|
||||||
void mousePressEvent(QMouseEvent *event);//------------------鼠标按下事件
|
void mousePressEvent(QMouseEvent *event);//------------------鼠标按下事件
|
||||||
|
private slots:
|
||||||
|
void on_pushButton_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::Widget *ui;
|
Ui::Widget *ui;
|
||||||
};
|
};
|
||||||
|
//****************************************************c
|
||||||
|
|
||||||
|
struct care
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
long color;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // WIDGET_H
|
#endif // WIDGET_H
|
||||||
|
|||||||
@@ -13,6 +13,19 @@
|
|||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Widget</string>
|
<string>Widget</string>
|
||||||
</property>
|
</property>
|
||||||
|
<widget class="QPushButton" name="pushButton">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>584</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>181</width>
|
||||||
|
<height>121</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Reset</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
#include "workthread.h"
|
|
||||||
#include <time.h>
|
|
||||||
#include <QDebug>
|
|
||||||
care car[5][5];
|
|
||||||
struct touch t;
|
|
||||||
|
|
||||||
void car_init()
|
|
||||||
{
|
|
||||||
|
|
||||||
int car_rand_buff[26];
|
|
||||||
int car_rand_int=0;
|
|
||||||
int car_rand=0;
|
|
||||||
int while_buff=0;
|
|
||||||
for(int y=0;y<5;y++)
|
|
||||||
{
|
|
||||||
for(int x=0;x<5;x++)
|
|
||||||
{
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
while_buff=0;
|
|
||||||
car_rand=(rand()%25)+1;
|
|
||||||
for(int z=0;z<car_rand_int;z++)
|
|
||||||
{
|
|
||||||
if(car_rand_buff[z]==car_rand)
|
|
||||||
{
|
|
||||||
while_buff=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}while(while_buff);
|
|
||||||
|
|
||||||
|
|
||||||
car[y][x].num=car_rand;
|
|
||||||
car_rand_buff[car_rand_int]=car_rand;
|
|
||||||
car_rand_int++;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int chack_car(int y,int x)
|
|
||||||
{
|
|
||||||
int a,b,c=0;
|
|
||||||
a=(x/car_size);
|
|
||||||
b=((y/car_size)*5);
|
|
||||||
c=a+b+1;
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void w()
|
|
||||||
{
|
|
||||||
int t_car_flag=0;
|
|
||||||
srand(time(NULL));
|
|
||||||
car_init();
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
if(t.flag)
|
|
||||||
{
|
|
||||||
t.flag=0;
|
|
||||||
t_car_flag=chack_car(t.y,t.x);
|
|
||||||
qDebug()<<t.y<<" "<<t.x<<" "<<t_car_flag;
|
|
||||||
}else{t_car_flag=0;}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void WorkThread::run()
|
|
||||||
{
|
|
||||||
|
|
||||||
w();
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
#ifndef WORKTHREAD_H
|
|
||||||
#define WORKTHREAD_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QThread>
|
|
||||||
|
|
||||||
#define car_size 110
|
|
||||||
|
|
||||||
class WorkThread : public QThread
|
|
||||||
{
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void run();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
//****************************************************c
|
|
||||||
|
|
||||||
struct care
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
long color;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
struct touch
|
|
||||||
{
|
|
||||||
char flag;
|
|
||||||
int y;
|
|
||||||
int x;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // WORKTHREAD_H
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -22,8 +22,8 @@ QT_BEGIN_MOC_NAMESPACE
|
|||||||
QT_WARNING_PUSH
|
QT_WARNING_PUSH
|
||||||
QT_WARNING_DISABLE_DEPRECATED
|
QT_WARNING_DISABLE_DEPRECATED
|
||||||
struct qt_meta_stringdata_Widget_t {
|
struct qt_meta_stringdata_Widget_t {
|
||||||
QByteArrayData data[1];
|
QByteArrayData data[3];
|
||||||
char stringdata0[7];
|
char stringdata0[30];
|
||||||
};
|
};
|
||||||
#define QT_MOC_LITERAL(idx, ofs, len) \
|
#define QT_MOC_LITERAL(idx, ofs, len) \
|
||||||
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
|
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
|
||||||
@@ -32,10 +32,12 @@ struct qt_meta_stringdata_Widget_t {
|
|||||||
)
|
)
|
||||||
static const qt_meta_stringdata_Widget_t qt_meta_stringdata_Widget = {
|
static const qt_meta_stringdata_Widget_t qt_meta_stringdata_Widget = {
|
||||||
{
|
{
|
||||||
QT_MOC_LITERAL(0, 0, 6) // "Widget"
|
QT_MOC_LITERAL(0, 0, 6), // "Widget"
|
||||||
|
QT_MOC_LITERAL(1, 7, 21), // "on_pushButton_clicked"
|
||||||
|
QT_MOC_LITERAL(2, 29, 0) // ""
|
||||||
|
|
||||||
},
|
},
|
||||||
"Widget"
|
"Widget\0on_pushButton_clicked\0"
|
||||||
};
|
};
|
||||||
#undef QT_MOC_LITERAL
|
#undef QT_MOC_LITERAL
|
||||||
|
|
||||||
@@ -45,21 +47,32 @@ static const uint qt_meta_data_Widget[] = {
|
|||||||
8, // revision
|
8, // revision
|
||||||
0, // classname
|
0, // classname
|
||||||
0, 0, // classinfo
|
0, 0, // classinfo
|
||||||
0, 0, // methods
|
1, 14, // methods
|
||||||
0, 0, // properties
|
0, 0, // properties
|
||||||
0, 0, // enums/sets
|
0, 0, // enums/sets
|
||||||
0, 0, // constructors
|
0, 0, // constructors
|
||||||
0, // flags
|
0, // flags
|
||||||
0, // signalCount
|
0, // signalCount
|
||||||
|
|
||||||
|
// slots: name, argc, parameters, tag, flags
|
||||||
|
1, 0, 19, 2, 0x08 /* Private */,
|
||||||
|
|
||||||
|
// slots: parameters
|
||||||
|
QMetaType::Void,
|
||||||
|
|
||||||
0 // eod
|
0 // eod
|
||||||
};
|
};
|
||||||
|
|
||||||
void Widget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
void Widget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
||||||
{
|
{
|
||||||
Q_UNUSED(_o);
|
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||||
Q_UNUSED(_id);
|
auto *_t = static_cast<Widget *>(_o);
|
||||||
Q_UNUSED(_c);
|
Q_UNUSED(_t)
|
||||||
|
switch (_id) {
|
||||||
|
case 0: _t->on_pushButton_clicked(); break;
|
||||||
|
default: ;
|
||||||
|
}
|
||||||
|
}
|
||||||
Q_UNUSED(_a);
|
Q_UNUSED(_a);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,6 +102,17 @@ void *Widget::qt_metacast(const char *_clname)
|
|||||||
int Widget::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
int Widget::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||||
{
|
{
|
||||||
_id = QWidget::qt_metacall(_c, _id, _a);
|
_id = QWidget::qt_metacall(_c, _id, _a);
|
||||||
|
if (_id < 0)
|
||||||
|
return _id;
|
||||||
|
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||||
|
if (_id < 1)
|
||||||
|
qt_static_metacall(this, _c, _id, _a);
|
||||||
|
_id -= 1;
|
||||||
|
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
|
||||||
|
if (_id < 1)
|
||||||
|
*reinterpret_cast<int*>(_a[0]) = -1;
|
||||||
|
_id -= 1;
|
||||||
|
}
|
||||||
return _id;
|
return _id;
|
||||||
}
|
}
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include <QtCore/QVariant>
|
#include <QtCore/QVariant>
|
||||||
#include <QtWidgets/QApplication>
|
#include <QtWidgets/QApplication>
|
||||||
|
#include <QtWidgets/QPushButton>
|
||||||
#include <QtWidgets/QWidget>
|
#include <QtWidgets/QWidget>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
@@ -18,12 +19,16 @@ QT_BEGIN_NAMESPACE
|
|||||||
class Ui_Widget
|
class Ui_Widget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
QPushButton *pushButton;
|
||||||
|
|
||||||
void setupUi(QWidget *Widget)
|
void setupUi(QWidget *Widget)
|
||||||
{
|
{
|
||||||
if (Widget->objectName().isEmpty())
|
if (Widget->objectName().isEmpty())
|
||||||
Widget->setObjectName(QString::fromUtf8("Widget"));
|
Widget->setObjectName(QString::fromUtf8("Widget"));
|
||||||
Widget->resize(800, 600);
|
Widget->resize(800, 600);
|
||||||
|
pushButton = new QPushButton(Widget);
|
||||||
|
pushButton->setObjectName(QString::fromUtf8("pushButton"));
|
||||||
|
pushButton->setGeometry(QRect(584, 40, 181, 121));
|
||||||
|
|
||||||
retranslateUi(Widget);
|
retranslateUi(Widget);
|
||||||
|
|
||||||
@@ -33,6 +38,7 @@ public:
|
|||||||
void retranslateUi(QWidget *Widget)
|
void retranslateUi(QWidget *Widget)
|
||||||
{
|
{
|
||||||
Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
|
Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
|
||||||
|
pushButton->setText(QCoreApplication::translate("Widget", "Reset", nullptr));
|
||||||
} // retranslateUi
|
} // retranslateUi
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user