在窗体 QT 上绘制内部小部件

Draw inside widget on form QT

我是QT的新手,所以一开始还请大家谅解。 我的问题是我想在 QT 窗体中包含的任何 widged 中绘制。因此,例如我以这种方式覆盖了 paintEvent 方法:

void MainWindow::paintEvent(QPaintEvent *e)
{
    QPainter p;
    p.begin(this);
    p.setBrush(Qt::red);
    p.drawRect(10, 10, 100, 100);
    p.end();
}

一切正常,红色矩形出现在表单上。然后我在表单的某处添加了例如 QWidget,我想以这种方式在这个小部件中绘制:

void MainWindow::paintEvent(QPaintEvent *e)
{
    QPainter p;
    p.begin(ui->widget);
    p.setBrush(Qt::red);
    p.drawRect(10, 10, 100, 100);
    p.end();
}

但是此小部件中没有显示任何内容。这可能吗?或者也许还有其他方法可以实现我的目标?对我来说最重要的是,我希望在我的表单上有任何一个小地方,它只用于在其中绘图。

非常感谢您的理解和帮助:)

您不能从另一个小部件中绘制一个小部件。每个小部件都在自己的 paintEvent() 函数中绘制自己,并且只绘制自己。

有关更多详细信息,您应该查看: