Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QWidget::paintEngine:不应再在QTreeWidget派生类中调用_C++_Qt_Qt5_Qpainter_Qtreewidget - Fatal编程技术网

C++ QWidget::paintEngine:不应再在QTreeWidget派生类中调用

C++ QWidget::paintEngine:不应再在QTreeWidget派生类中调用,c++,qt,qt5,qpainter,qtreewidget,C++,Qt,Qt5,Qpainter,Qtreewidget,我有一个类,MyTree,它派生自QTreeWidget和 void MyTree::paintEvent(QPaintEvent *event) { QPainter painter(this); } 引发了以下问题, QWidget::paintEngine:不应再被调用 QPaint::begin:绘制设备返回的引擎==0,类型:1 有人能帮我解决这个问题吗?如果类继承自as和您的MyTree小部件中,绘画不是直接给出的,而是文档中指出的: void QAbstractScrol

我有一个类,
MyTree
,它派生自
QTreeWidget

void MyTree::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
}
引发了以下问题,

QWidget::paintEngine:不应再被调用

QPaint::begin:绘制设备返回的引擎==0,类型:1


有人能帮我解决这个问题吗?

如果类继承自as和您的
MyTree
小部件中,绘画不是直接给出的,而是文档中指出的:

void QAbstractScrollArea::重新实现了paintEvent(QPaintEvent*event) 来自QFrame::paintEvent()。

此事件处理程序可以在子类中重新实现以接收绘制 viewport()小部件的事件(在事件中传递)

注意:如果打开画师,请确保在视口()上打开它

因此,解决方案如下:

void MyTree::paintEvent(QPaintEvent *event)
{
    QPainter painter(viewport());
}

对于从as和您的
MyTree
继承的类,绘制不是直接在小部件中给出的,而是在文档中指出的:

void QAbstractScrollArea::重新实现了paintEvent(QPaintEvent*event) 来自QFrame::paintEvent()。

此事件处理程序可以在子类中重新实现以接收绘制 viewport()小部件的事件(在事件中传递)

注意:如果打开画师,请确保在视口()上打开它

因此,解决方案如下:

void MyTree::paintEvent(QPaintEvent *event)
{
    QPainter painter(viewport());
}
我找到了一个解决方案: 通过替换

QPainter painter(本)

QPainter painter(viewport())

问题解决了。

我找到了一个解决方案: 通过替换

QPainter painter(本)

QPainter painter(viewport())

问题解决了。

@BandulaDharmadasa全部功劳将归于。;-)@班杜拉·达尔马达萨的全部功劳将归于.-)