【工具介绍-Qt】计概大作业之四,鼠标交互事件、重绘、绘制棋子

由 联环己烷 发布

大作业的GUI部分已经要进入尾声啦~这次的内容比较多,不过都很简单!

重绘

我们在第一篇中曾经简要介绍过paintEvent事件。

paintEvent函数在每次窗口show()和update()的时候会被调用。也就是说,当我们更新了窗口的信息后,就需要调用update()来重绘。

鼠标交互事件

每次鼠标对界面发生交互后,就会调用鼠标交互事件。主要是这些:

void mouseReleaseEvent(QMouseEvent *event);//松开鼠标
void mousePressEvent(QMouseEvent *event);//按下鼠标
void mouseDoubleClickEvent(QMouseEvent *event);//双击鼠标
void mouseMoveEvent(QMouseEvent *event);//移动

我们写棋类游戏,只要用到mouseReleaseEvent即可。

通过event->xevent->y就可以获得松开鼠标时鼠标在窗口中的坐标。

绘制棋子

这个使用QPainter中的drawEllipse(画椭圆)就可以画了。

(坑的是传的参不是它的圆心和半径,而是左上角坐标和长轴短轴长度,所以参数需要好好计算QAQ)

然后就是关于QBrush和QPen了,QBrush的话,可以百度一下,这个决定了你画出来的图形的填充效果,当然还有设置颜色。QPen呢,主要是用来去掉白棋的黑边。

paint->setPen(Qt::NoPen);
paint->setBrush(QBrush(Qt::white,Qt::SolidPattern));//画白棋

设置Pen的话,还可以决定你画棋盘线的粗细颜色。

QPen LinePen=paint->pen();
LinePen.setWidth(10);
LinePen.setColor(QColor(159,107,60));

最后的效果:

s2.png


暂无评论

发表评论


京公网安备 11010802033049号