在窗体 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()
函数中绘制自己,并且只绘制自己。
有关更多详细信息,您应该查看:
我是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()
函数中绘制自己,并且只绘制自己。
有关更多详细信息,您应该查看: