在表单 QT 上的小部件内绘制

Draw inside widget on form QT

本文关键字:绘制 小部 表单 QT      更新时间:2023-10-16

我是QT的新手,所以一开始我请理解。我的问题是我想在 QT 表单中包含的任何 wided 中绘制。因此,例如,我以这种方式覆盖了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()函数中绘制自己,并且只绘制自己。

有关更多详细信息,您应该查看:如何使用QPainter在QMainWindow中的一组小部件的特定小部件上绘制?