激活事件过滤器
ui->widgetGrid->installEventFilter(this);
重写函数eventFilter
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
//筛选子控件
if(watched == ui->widgetGrid )
{
//筛选事件
if(event->type() == QEvent::Paint)
{
//绘图
int rowstep= ui->widgetGrid->height()/5;
int colstep = ui->widgetGrid->width()/4;
QPainter painter(ui->widgetGrid);
QPen pen = painter.pen();
pen.setWidth(1);
pen.setColor(Qt::black);
pen.setStyle(Qt::SolidLine);
painter.setPen(pen);
for(int i=0;i<=5;i++)
{
painter.drawLine(0, rowstep*i, colstep*4, rowstep*i);
}
for(int i=0;i<=4;i++)
{
painter.drawLine(0+colstep*i,0,colstep*i,rowstep*5);
}
}
}
//将事件传递给父类
return QWidget::eventFilter(watched,event);
}
绘制结果: