C++ 与Qt开发人机象棋(第一部分)
MyWidget.h //Hearders
#include <QWidget>
#include "MyWidget.h"
#include <QPushbutton>
namespace{
class MyWidget:
}
class MyWidget:public QWidget
{
Q_OBJECT
public:
explict MyWidget(QWidget *parent=0);
//在QTcreator中,类倾斜表示为虚函数
virtual void paintEvent(QPaintEvent*);
//Mmouse press event鼠标点击操作
virtual void mousePressEvent(QMouseEvent*);
//定义一个按钮对象
QPushButton*_button;
//定义一个点击事件
QPoint _ptClick;
private:
Ui::MyWidget *ui;
};
#endif // MYWIDGET_H
以上是在头文件.h里 先定义好要用到的事件,和对象。
接下来是 MyWidget.cpp
MyWidget.cpp //Sources
#include "MyWidget.h"
#include <QPainter> //为了能绘制,使用到这个类来绘制
#include <QMouseEvent> //为了能点击时用到,所以这个类可以分配给ev形参
MyWidget::MyWidget(QWidget *parent):
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setup(this);
_button=new QPushButton("按一下",this);//注意这里的this,是指这里的MyWidget ,否则button会独立
}
MyWidget::~MyWidget() //这个ui现在其实也没什么用,后期可能会用到,就加进来了。(比如美化界面)
{
delete ui;
}
void MyWidget::paintEvent(QPaintEvent*)
{
setWindowsTitle("perdonar quenopodiáceo qué"); //设置窗体名称(西班牙语“原谅管子我”)
QPaint painter(this);
painter.darwEllipse(_ptClick,30,30,);//这是一个绘制-》鼠标点击的地方-》30*30大小
painter.setBruh(QBrush(QColor(0,0,255)));//暂时假设他是一个透明看不见的绿色帽子。
}
void MyWidget::mousePressEvent(QMouseEvent *ev) //把ev作为形参可以传递数值
{
_ptClick=ev->pos(); //得到鼠标点击的地方
update(); //用来强制重新绘制界面
}
编译后,会得到这样的一个界面,现在可以在界面上 任意点击,都会有一个 30*30的圆圈啦。
重点有:
1.函数的定义和形参的带入与回传
2.析构函数与构造函数不可混淆写错