QPainter p(this);
时间: 2023-08-14 12:08:22 浏览: 26
这也是一个Qt框架中的语句,用于创建一个QPainter对象并将其绑定到当前的绘图设备上。具体来说,它使用this指针(即当前对象的指针)来创建一个QPainter对象,这个QPainter对象可以用于在当前对象的绘图设备上进行绘图操作。这通常用于自定义绘图或者在QWidget、QFrame、QLabel等控件上绘制图形。
相关问题
解释下面代码void MainWindow::paintEvent(QPaintEvent *) { QPainter p(this); p.setBrush(Qt::blue); p.setFont(QFont("微软雅黑",20,700,false)); QString strscore; p.drawText(QPoint(20,60),"分数: "+QString::number(score)); p.drawText(QPoint(200,60),"highScore: "+QString::number(highScore)); //格子的绘制——颜色,格子的大小,格子之间的间隔 for (int i=0;i<4;i++) { for (int j=0;j<4;j++) { p.setPen(Qt::transparent);//为了保持图形的准确性而不显示边框 if(s[i][j]==0){ p.setBrush(Qt::gray); //(xy的坐标,长,宽) p.drawRect(i*125+50,j*125+100,120,120); }
这是 MainWindow 类中的一个成员函数,用于绘制游戏界面的格子。该函数接收一个 QPaintEvent 类型的参数,但在函数中没有使用该参数。函数通过 QPainter 类创建一个画笔对象并将其绑定到当前窗口上。接着,设置画笔的颜色、字体等属性,用于绘制分数和高分,并在窗口上绘制相应的文字。接下来使用嵌套循环遍历 4x4 的格子,对于每个格子,根据其值设置画笔的颜色,绘制矩形框用于表示该格子,并根据其位置和大小将其绘制在窗口上。其中,s[i][j] 表示第 i 行第 j 列格子的值,如果其为 0,则绘制灰色空框,否则使用其他颜色填充该格子。最后,通过调用 QWidget 类的 update() 函数,强制刷新窗口,使得新的绘制内容能够在窗口上显示出来。
#include "newbtn.h" #include<QPainter> #include<QDebug> newbtn::newbtn(QWidget *parent) : QWidget(parent) { m_pixmap.load(":/1.jpg"); setFixedSize(m_pixmap.size()); } void newbtn::mouseReleaseEvent(QMouseEvent *event) { m_pixmap.load(":/1.jpg"); qDebug()<<"mouseReleaseEvent"; update(); } void newbtn::mousePressEvent(QMouseEvent *event) { m_pixmap.load(":/2.jpg"); update(); } void newbtn::enterEvent(QEvent *event) { m_pixmap.load(":/3.jpg"); update(); } void newbtn::leaveEvent(QEvent *event) { m_pixmap.load(":/1.jpg"); update(); } void newbtn::painteEvent(QPaintEvent *event) { QPainter p(this); p.drawPixmap(rect(),m_pixmap); }
这是一个自定义的按钮类 newbtn,继承自 QWidget,通过重写鼠标事件和进入离开事件来实现按钮的交互效果。在构造函数中,加载了一张图片作为按钮的初始状态。在鼠标事件中,根据不同的事件类型,加载不同的图片,并调用 update() 函数来触发 paintEvent() 函数进行重新绘制。在 paintEvent() 函数中,使用 QPainter 类进行绘制,将图片绘制到按钮上。