Qt 在 QT Designer 创建的小部件上绘制

Qt paint on a widget created by QT Designer

如何在不覆盖 paintEvent 的情况下在小部件上绘画。

我想在 Qt Designer 生成的另一个小部件内的小部件上绘画,所以我无法覆盖它 paintEvent

我试过直接这样画:

QPainter *painter= new QPainter(ui->drawArea);
painter.drawLine(50,50,50,150);
painter.close();

但是 Qt 告诉我 QPainDevice 是 0 或类似的东西,

我通过创建画家尝试了相同的示例,然后使用 QPaintDevice(小部件)调用 begin() 方法但同样的问题。

Qt 版本:4.8.6.

在 Designer 中使用自定义小部件不是问题。在 Designer 中,将您的小部件添加为任何其他 QWidget 或 QPushButton,具体取决于哪个具有最接近的继承。然后使用右键单击菜单 select Promote to ...,添加您的 MyWidget.h,然后将小部件提升到 MyWidget 并重新实现 paintEvent()。阅读更多:

http://doc-snapshots.qt.io/4.8/designer-using-custom-widgets.html#promoting-widgets