我有一个MyTree
类,它是从QTreeWidget
和
void MyTree::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
}
引起以下问题,
QWidget :: paintEngine:应该不再被调用
QPainter :: begin:绘制设备返回的引擎== 0,键入:1
有人可以帮我解决问题吗?
答案 0 :(得分:2)
对于从QAbstractScrollArea
继承为QTreeWidget
和您的MyTree
的类,绘画不是直接在小部件中给出,而是在viewport()
中给出,如文档:
无效QAbstractScrollArea :: paintEvent(QPaintEvent * event)重新实现 来自QFrame :: paintEvent()。
可以在子类中重新实现此事件处理程序以接收绘画 事件(传入事件),用于viewport()小部件。
注意:如果您打开一个画家,请确保在viewport()上将其打开。
因此解决方案如下:
void MyTree::paintEvent(QPaintEvent *event)
{
QPainter painter(viewport());
}
答案 1 :(得分:0)
我找到了解决方案: 通过替换
QPainter painter(this);
使用
QPainter painter(viewport());
问题解决了。