QWidget::paintEngine:不应再在派生的 QTreeWidget 中调用 class
QWidget::paintEngine: Should no longer be called in a QTreeWidget derived class
我有一个 class、MyTree
,它源自 QTreeWidget
和
void MyTree::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
}
引起以下问题,
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
有人可以帮我解决这个问题吗?
如果 类 继承自 QAbstractScrollArea
as QTreeWidget
and your MyTree
the painting is not given directly in the widget but in the viewport()
,如文档所示:
void QAbstractScrollArea::paintEvent(QPaintEvent *event) Reimplemented
from QFrame::paintEvent().
This event handler can be reimplemented in a subclass to receive paint
events (passed in event), for the viewport() widget.
Note: If you open a painter, make sure to open it on the viewport().
所以解决方法如下:
void MyTree::paintEvent(QPaintEvent *event)
{
QPainter painter(viewport());
}
我找到了解决办法:
通过替换
QPainter painter(this);
与
QPainter painter(viewport());
问题已解决。
我有一个 class、MyTree
,它源自 QTreeWidget
和
void MyTree::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
}
引起以下问题,
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
有人可以帮我解决这个问题吗?
如果 类 继承自 QAbstractScrollArea
as QTreeWidget
and your MyTree
the painting is not given directly in the widget but in the viewport()
,如文档所示:
void QAbstractScrollArea::paintEvent(QPaintEvent *event) Reimplemented from QFrame::paintEvent().
This event handler can be reimplemented in a subclass to receive paint events (passed in event), for the viewport() widget.
Note: If you open a painter, make sure to open it on the viewport().
所以解决方法如下:
void MyTree::paintEvent(QPaintEvent *event)
{
QPainter painter(viewport());
}
我找到了解决办法: 通过替换
QPainter painter(this);
与
QPainter painter(viewport());
问题已解决。