Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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++ 在其父级前面绘制qgraphicsitem_C++_Qt_Qgraphicsitem - Fatal编程技术网

C++ 在其父级前面绘制qgraphicsitem

C++ 在其父级前面绘制qgraphicsitem,c++,qt,qgraphicsitem,C++,Qt,Qgraphicsitem,我想使用QGraphicsItem中的paint函数绘制一个圆形矩形,我有一个父项,我想在它前面绘制它的子项,但我不知道如何做? 我还有一个问题,我想根据它们的父位置列出这些项目,但是位置是静态的,我如何根据父位置来定位项目 我的绘画功能: void flipedWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *w) { Q_UNUSED(w) Q_UNUSED(op

我想使用QGraphicsItem中的paint函数绘制一个圆形矩形,我有一个父项,我想在它前面绘制它的子项,但我不知道如何做? 我还有一个问题,我想根据它们的父位置列出这些项目,但是位置是静态的,我如何根据父位置来定位项目

我的绘画功能:

void flipedWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *w)
{
    Q_UNUSED(w)
    Q_UNUSED(option)
    painter->setPen(Qt::NoPen);
    QBrush *brush;
    if(!m_color.isEmpty())
        brush = new QBrush(QColor(m_color)); // set background color
    else
        brush = new QBrush("#cccccc");
    painter->setBrush(*brush);
    painter->drawRoundedRect(boundingRect(), 10, 10);
    delete brush;
}

这是两个问题。一个主题=一个问题。您的代码中到底有什么不起作用?在将painter和option*传递到此函数之前,您如何处理它们?是否检查了boundingRect返回的值?可能是屏幕外的,或者很小。此外,不需要为QBrush分配新的,然后将其删除;只需将其分配到堆栈上即可。默认情况下,子对象绘制在父对象之前,并相对于父对象进行定位。你可能还做错了什么。