qt在窗口的子部件中绘制矩形

引言

在窗口中绘制矩形,只需重写paintEvent()函数,在重回函数中实现绘制矩形便可。但在窗口的某一个子部件中实现绘制矩形,此时就需重写事件过滤函数,在指定的子部件的绘图事件实现绘制矩形。

结构

窗口部件的组成如下图,现需在子部件widget中实现绘制矩形。
在这里插入图片描述

实现

重写事件过滤,在指定电子部件的绘图事件下实现绘制矩形。
首先安装事件过滤器
在构造函数中添加具体控件安装事件过滤器。

 ui->widget->installEventFilter(this);
 ui->backWidget->installEventFilter(this);
 

重写事件过滤函数,在事件过滤函数中实现在子控件中的绘制矩形操作。

bool LayoutShowForm::eventFilter(QObject *watched, QEvent *event)
{
    if (watched == ui->widget && event->type() == QEvent::Paint) {
        paintLayout(ui->widget);
        return true;
    }else if (watched == ui->backWidget && event->type() == QEvent::Paint) {
        paintLayoutPreBoardLine(ui->backWidget);
        return true;
    }
    return false;
}
void LayoutShowForm::paintLayout(QWidget *widget)
{
    QPainter painter(widget);
    QPen pen;
    pen.setBrush(QBrush(QColor(255,255,255,255)));
    painter.setPen(pen);
    QBrush brush(QColor(104,216,204,255));
    painter.setBrush(brush);

    for (int i = 0; i < m_layoutInfo.size(); ++i) {
        painter.drawRect(QRect(m_layoutInfo[i].x,m_layoutInfo[i].y,m_layoutInfo[i].width,m_layoutInfo[i].height));
    }

}

上述截取部分代码,读者只需看懂思路便可,后面两个函数是具体的绘制功能,与当时业务有关,读者自行编写自己的绘制函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肩上风骋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值